В C# (или VB .NET) компилятор пытается оптимизировать доступ к свойствам? Для например.,C# Оптимизация доступа к объектам
public ViewClass View
{
get
{
...
Something is computed here
....
}
}
if (View != null)
View.Something = SomethingElse;
Я бы предположил, что если компилятор может каким-то образом определить, что View
остается постоянным между двумя обращениями, он может отказаться от вычисления значения в два раза. Выполнены ли эти оптимизации?
Я понимаю, что если View
имеет некоторые интенсивные вычисления, вероятно, он должен быть реорганизован в функцию (GetView()
). В моем конкретном случае View
предполагает восхождение на визуальное дерево, ищущее элемент определенного типа.
Связанные: Любые ссылки на работу компилятора (Microsoft) C#?
Как компилятор знал бы, что значение не изменилось? Что делать, если класс используется в многопоточном коде? – tster
@tster: Предположительно, у компилятора есть хрустальный шар. –