c# - 在 C# 中,为什么我在声明它时看到我的 int 变量中存储了一个零,但仍然收到一条错误消息说我应该初始化它?

标签 c# variables

在 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://social.msdn.microsoft.com/Forums/en/csharplanguage/thread/a073ccea-c43b-4536-be76-41949f0e2135

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/

相关文章:

c++ - 有没有办法组合两个变量?

c# - 启动画面 IOException

c# - 带参数的命令

ios - 为 Swift 属性赋值

python - Pycharm Python 控制台 : What is "Variables Loading Policy"?

java-引用变量和父类(super class)引用变量

c# - 工厂模式、另一种模式还是根本没有模式?

c# - C# WinForm Paypal 与 asmx web 服务集成时出错

c# - sql query left join on mysql vs ms-access DB

swift - 简而言之,括号中的 set 是什么意思?