在 C# 中,如果我做类似的事情:
int x;
然后按 F10,我看到 x 中存储了一个零。
但是当我尝试使用 x 时,它告诉我应该初始化它.. 这是为什么 ? 那里应该有一个零,对吧?
同样的事情也适用于数组,所以:
int[]a = new int[5];
如果我们 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 (证明是关于该主题的最有用的信息)
甚至more讨论“localsinit”IL 标志(强制为本地设置默认值)与“双重赋值”(C# 强制您编写 int v=0
,即使它已经存在)之间的关系).如果您想更深入地阅读 - 在 ECMA-335 available here 的 I.12.2 节中定义的“localsinit” .
关于c# - 在 C# 中,为什么我在声明它时看到我的 int 变量中存储了一个零,但仍然收到一条错误消息说我应该初始化它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462608/