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