为什么在c#中我们需要初始化基本类型变量 -
static void Main(string[] args)
{
int a;
Console.WriteLine(a);
}
抛出编译时错误......
答案 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,或者显示'我不知道是什么'”是一个弱论点。
这就像说“你想要苹果还是空虚?”。