为什么在c#中我们需要初始化原始类型变量?

时间:2011-02-09 13:26:53

标签: c#

为什么在c#中我们需要初始化基本类型变量 -

static void Main(string[] args)
{
   int a;
   Console.WriteLine(a);
}

抛出编译时错误......

4 个答案:

答案 0 :(得分:5)

为了防止潜在的编码错误,C#将不允许您使用任何局部变量,直到编译器能够证明它已被初始化。

答案 1 :(得分:0)

纯粹是因为它是良好做法。无论如何,CLR将它们初始化为默认值 - ValueTypes

答案 2 :(得分:0)

因为推理功能....  c#确实键入了变量static而不像python pearl中的dynamic 所以通过检查初始化变量的值的类型 决定并验证变量的类型。 它在编译时完成

答案 3 :(得分:0)

还有另一个概念上的原因。

.NET中的所有东西都是一个对象。

变量是持有者,可以保存对象的引用,也可以指向值。

为什么C#应该能够让你输出到Console(如你的例子中)一个什么都没有的变量?

对我来说问题是,难道你找不到有用的C#编译器阻止你创建无用的代码?任何帮助在避免人为错误或错误逻辑方面总是有用的。

也许我应该相信你这样说因为......

int a;

if(false) { a = 1; }

Console.WriteLine(a);

...也不会编译。

那么,为什么C#编译器应该允许你使用什么都没有引用?任何争论都会很弱,因为好的程序应该写什么来控制什么?如果您的程序不需要打印,请不要打印。

例如,如果你想做得对,那应该是:

int a;

if(false) { a = 1; } else { a = 0; }

Console.WriteLine(a);

“我希望我的程序显示1如果它是假的,或者如果它是真的则显示0”。但是“如果它是假的,则显示1,或者显示'我不知道是什么'”是一个弱论点。

这就像说“你想要苹果还是空虚?”。