【发布时间】:2011-09-06 23:21:24
【问题描述】:
这样一段代码,编译器会报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 不会抛出相同的异常,对象引用未设置为对象的实例?
【问题讨论】:
-
嗯,这很有趣,我的猜测是虽然这段代码(第二版)仍然会在运行时抛出异常。这可能只是一个 Visual Studio 问题,没有获得空分配- 只是猜测?
-
问得非常漂亮优雅的问题
标签: c# exception variable-assignment