【发布时间】:2010-07-23 23:07:21
【问题描述】:
在 C#(或 VB .NET)中,编译器是否会尝试优化属性访问?例如,
public ViewClass View
{
get
{
...
Something is computed here
....
}
}
if (View != null)
View.Something = SomethingElse;
我想如果编译器能够以某种方式检测到View 在两次访问之间保持不变,它可以避免计算两次该值。是否执行了这些优化?
我知道如果View 有一些密集的计算,它可能应该被重构为一个函数(GetView())。在我的特殊情况下,View 涉及爬上可视化树以寻找特定类型的元素。
相关:关于(Microsoft)C# 编译器工作原理的任何参考资料?
【问题讨论】:
-
编译器如何知道值没有改变?如果在多线程代码中使用该类怎么办?
-
@tster:想必,编译器有一个水晶球。
标签: c# .net optimization compiler-construction