С таким фрагментом кода компилятор жалуется на c.MyProperty
:
MyClass c;
try { throw new Exception(); }
catch (Exception) { }
c.MyProperty = 2; // "Use of unassigned local variable 'c'".
Однако он не жалуется, если вы присваиваете null
параметру c
при инициализации:
MyClass c = null;
try { throw new Exception(); }
catch (Exception) { }
c.MyProperty = 2; // no complains this time.
Итак, почему это работает? Если c
не был назначен null
и компилятор гипотетически разрешил это, не будет ли такое же исключение сгенерировано в c.MyProperty
, Object ссылка не установлена на экземпляр объекта ?