2010-10-13 78 views
0

以下两行代码之间是否存在执行速度差异?我不能看IL告诉:.Net/C#的速度是否随着场景深度的增加而降低?

int x = MainObject.Field1; 
int x = MainObject.Public.Fields.Field1; 

我知道德尔福(本机代码),没有任何区别。

+0

你怎么能不告诉IL?两者都生成一个**单**,几乎相同的IL语句。 – 2010-10-13 18:34:23

+3

如果这些属性是非平凡的,那么它们内部可能存在任意复杂的代码,所以不可能这样说。如果它们都是引用类型的字段,(简化一点),每个“嵌套的”(非空)引用必须被解除引用:它所引用的对象将位于堆的不同部分。这将有一个小的性能成本;特别是,它不会缓存友好。在大多数真实世界的应用程序中,不会有任何显着差异。 – Ani 2010-10-13 18:36:32

+2

@Ani - 您的评论比标记的答案更准确。你应该发布它。 – 2010-10-13 18:49:08

回答

1

通过'。'访问。到更深的类结构元素 - 否,但方法调用它 - 是的。

+1

这个问题在方法调用的上下文中没有意义。 – 2010-10-13 18:32:20

+0

调用次数: int x = MainObject.Field1.ToString()。Trim()。Length; – UGEEN 2010-10-13 18:43:42

0

没有什么区别。 (假设你的意思是,就像你在标题中所说的那样)