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

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

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

抛出编译时错误…

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

纯粹因为这是一个很好的做法 。 无论如何,CLR将它们初始化为默认值 – 对于ValueTypes

因为推理function…. c#类型转换变量静态不像python pearl中的动态,所以通过检查变量初始化的值的类型来确定和validation变量的类型。 它在编译时完成

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

.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,如果它是假的,或显示’我不知道是什么’”是一个弱论点。

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