2011-02-09 105 views

回答

5

为了防止潜在的编码错误,C#不会允许你使用任何直到编译器可以证明它已经被初始化为止。

0

纯粹是因为它是良好做法。 CLR将它们初始化为默认值 - 对于ValueTypes

0

其因推理功能.... C#不类型,以便通过检查,您的变量初始化 类型的变量决定和验证值的类型转换成静态变量与动态的python珍珠 。 它在编译时完成

0

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

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

变量是持有者,它可以持有对象的引用或者可以指向值。

为什么C#应该能够让你输出到控制台(如你的例子)一个变量,它不包含任何东西?

对我来说,问题是,你没有找到有用的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”是一个弱言。

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

相关问题