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

明月书君 2015-06-03 12:55:02
比如我有一个 parent 对象,parent 里有一个child 属性,是一个child对象, child里有一个 grandchild 属性,是一个grandchild对象。

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

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

编译原理没学好,需要重新补习,但是比较急切知道这个问题,求指教~
...全文
117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
明月书君 2015-06-03
  • 打赏
  • 举报
回复
引用 5 楼 effun 的回复:
这个要看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属性只是返回一个字段值(这是通常的做法),两者的差别并不大,但仍旧是后者会好一点,因为毕竟要少一次方法调用,少一次调用堆栈的开销。
谢谢
明月书君 2015-06-03
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
单单这么写,效率一样。 var不影响效率
其实就是随便写了 var ,问的不是这个,不过谢谢回答~
effun 2015-06-03
  • 打赏
  • 举报
回复
这个要看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属性只是返回一个字段值(这是通常的做法),两者的差别并不大,但仍旧是后者会好一点,因为毕竟要少一次方法调用,少一次调用堆栈的开销。
xuzuning 2015-06-03
  • 打赏
  • 举报
回复
运行效率两者一样 书写效率,后者高于前者
  • 打赏
  • 举报
回复
没有任何不同,编译器执行时也是一个个属性执行下来的
threenewbee 2015-06-03
  • 打赏
  • 举报
回复
写两行写一行产生的目标代码也一样。
threenewbee 2015-06-03
  • 打赏
  • 举报
回复
单单这么写,效率一样。 var不影响效率

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧