日期:2014-05-17  浏览次数:20814 次

C#深层次引用对效率的影响问题
比如我有一个代码,代码大体如下
C# code

public class C
{
    public B myB;
    //other code
}
public class B
{
    public A myA;
    //other code
}
public class A
{
    public int num;
    //other code
}


这里我就想调用
[code=c#]
C c=new C();
c.myB.myA.num;
[/code]
这样对执行效率会有什么样的影响呢?如果可以减少引用层次,会不会执行的更快呢?

------解决方案--------------------
如果直接使用汇编语言,我们的程序都会更快。如果直接使用0、1编程,会更快。

因此这是无意义的。首先要看你的设计,你能走多远要看你现在独立设计程序的能力有多少。而不是看你能抄袭多少行别人的代码。

回到你的问题,如果你只是为了引用而引用,那么当然毫无意义。如果你有道理去引用,那么别说有2层,就是有10层也不为过。而你举不出为什么要分层时,也就是说你没有可能去设计高级的架构程序时,当然应该以最简单的方式去写代码,不引用。但是绝不是说为了(测试之后程序的附加价值等于0)“更快一点”而不引用。
------解决方案--------------------
顺便说下,使用属性访问器更好

public class C
{
public B myB { get; set; }
//other code
}

看上去属性访问会使得代码变慢,事实上也没有影响,因为JIT编译器做了内联。