Исправление «Использование неназначенной локальной переменной» с присвоением null. Почему?

С таким фрагментом кода компилятор жалуется на 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 ссылка не установлена ​​на экземпляр объекта ?

32
задан Andreas Grech 2 June 2011 в 10:10
поделиться