以下兩行代碼之間是否存在執行速度差異?我不能看IL告訴:.Net/C#的速度是否隨着場景深度的增加而降低?
int x = MainObject.Field1;
int x = MainObject.Public.Fields.Field1;
我知道德爾福(本機代碼),沒有任何區別。
以下兩行代碼之間是否存在執行速度差異?我不能看IL告訴:.Net/C#的速度是否隨着場景深度的增加而降低?
int x = MainObject.Field1;
int x = MainObject.Public.Fields.Field1;
我知道德爾福(本機代碼),沒有任何區別。
通過'。'訪問。到更深的類結構元素 - 否,但方法調用它 - 是的。
這個問題在方法調用的上下文中沒有意義。 – 2010-10-13 18:32:20
調用次數: int x = MainObject.Field1.ToString()。Trim()。Length; – UGEEN 2010-10-13 18:43:42
沒有什麼區別。 (假設你的意思是,就像你在標題中所說的那樣)
你怎麼能不告訴IL?兩者都生成一個**單**,幾乎相同的IL語句。 – 2010-10-13 18:34:23
如果這些屬性是非平凡的,那麼它們內部可能存在任意複雜的代碼,所以不可能這樣說。如果它們都是引用類型的字段,(簡化一點),每個「嵌套的」(非空)引用必須被解除引用:它所引用的對象將位於堆的不同部分。這將有一個小的性能成本;特別是,它不會緩存友好。在大多數真實世界的應用程序中,不會有任何顯着差異。 – Ani 2010-10-13 18:36:32
@Ani - 您的評論比標記的答案更準確。你應該發佈它。 – 2010-10-13 18:49:08