在C#中,如果我这样做:
int x;
Run Code Online (Sandbox Code Playgroud)
然后点击F10,我看到存储在x中的零.
但是当我尝试使用x时,它告诉我应该初始化它..为什么会这样?那里应该是零,对吧?
关于数组也是如此,所以:
int[]a = new int[5];
Run Code Online (Sandbox Code Playgroud)
如果我们F10那么,我们会看到那里的所有整数都是零.
这是怎么回事 ?为什么我必须在C#中初始化一个变量而不像C++?
这是一个编译时错误,试图帮助您减少由于未初始化的变量导致的代码中的错误.很有用.
http://msdn.microsoft.com/en-us/library/4y7h161d(VS.80).aspx
更多阅读:
http://blogs.msdn.com/b/abhinaba/archive/2005/11/08/490248.aspx
关于禁用错误的一些话(你不能只是警告你 - 这不是警告):
和
http://blogs.msdn.com/b/ericlippert/archive/2009/10/12/absence-of-evidence-is-not-evidence-of-absence.aspx (证明该主题信息最丰富)
甚至更多讨论"localsinit"IL标志(强制为本地人设置默认值)之间的关系及其与"双重赋值"的关系(C#强制你写,int v=0即使它已经存在).如果你想更深入地阅读 - 这里提供的ECMA-335第I.12.2节中定义的"localsinit" .