c# – 使用null赋值修改’使用未分配的局部变量’。为什么?

使用这样的代码,编译器抱怨c.MyProperty:

MyClass c;

try { throw new Exception(); }
catch (Exception) { }

c.MyProperty = 2; // "Use of unassigned local variable 'c'".

但是,如果在初始化中为c分配null,则不会抱怨:

MyClass c = null;

try { throw new Exception(); }
catch (Exception) { }

c.MyProperty = 2; // no complains this time.

那么为什么这样做呢?如果c没有分配一个null并且编译器假设允许它,那么在c.MyProperty中不会抛出同样的异常,Object引用没有设置为一个对象的实例?

当你给变量赋值时,你告诉编译器退出,因为你知道比他更好,所以他不应该抱怨这个。

这可能是因为分配null被认为意味着开发人员明确的行动。

http://stackoverflow.com/questions/6213113/fixing-the-use-of-unassigned-local-variable-with-a-null-assignment-why

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 使用null赋值修改’使用未分配的局部变量’。为什么?