当前位置: 代码迷 >> C# >> C#应用属性链的效率有关问题
  详细解决方案

C#应用属性链的效率有关问题

热度:71   发布时间:2016-05-05 03:31:19.0
C#应用属性链的效率问题
比如我有一个 parent 对象,parent 里有一个child 属性,是一个child对象, child里有一个 grandchild 属性,是一个grandchild对象。

那我这样引用 parent.child.grandchild  和我这样引用, var child=parent.child; child.grandchild 

只是举个例子,请问这两种写法效率有什么不一样嘛?

编译原理没学好,需要重新补习,但是比较急切知道这个问题,求指教~
------解决思路----------------------
单单这么写,效率一样。
var不影响效率
------解决思路----------------------
写两行写一行产生的目标代码也一样。
------解决思路----------------------
没有任何不同,编译器执行时也是一个个属性执行下来的
------解决思路----------------------
运行效率两者一样
书写效率,后者高于前者
------解决思路----------------------
这个要看child属性是怎么写的了,考虑以下两段代码:

for (int i = 0; i < 10000; i++)
{
  var value = parent.child.grandchild;
}


var child = parent.child;
for (int i = 0; i < 10000; i++)
{
  var value = child.grandchild;
}


如果生成child属性值的比较复杂,很明显第二段代码要优于第一段,但如果child属性只是返回一个字段值(这是通常的做法),两者的差别并不大,但仍旧是后者会好一点,因为毕竟要少一次方法调用,少一次调用堆栈的开销。
  相关解决方案