为什么在C#中我们需要初始化基本类型变量 -为什么在C#中我们需要初始化原始类型变量?
static void Main(string[] args)
{
int a;
Console.WriteLine(a);
}
抛出编译时错误...
为什么在C#中我们需要初始化基本类型变量 -为什么在C#中我们需要初始化原始类型变量?
static void Main(string[] args)
{
int a;
Console.WriteLine(a);
}
抛出编译时错误...
为了防止潜在的编码错误,C#不会允许你使用任何直到编译器可以证明它已经被初始化为止。
纯粹是因为它是良好做法。 CLR将它们初始化为默认值 - 对于ValueTypes
。
其因推理功能.... C#不类型,以便通过检查,您的变量初始化 类型的变量决定和验证值的类型转换成静态变量与动态的python珍珠 。 它在编译时完成
还有另一个概念上的原因。
.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”是一个弱言。
这就像说“你想要苹果还是空虚?”。
你会期待什么其他结果? – 2011-02-09 13:29:17
这与原语无关。 – SLaks 2011-02-09 13:29:25
@jsummers:他可能期待`0`。 – SLaks 2011-02-09 13:29:42