C# 未赋值局部变量“x”的使用

C# 未赋值局部变量“x”的使用,c#,variables,C#,Variables,此代码: int a; if(a==1){ do something} 或 这些代码生成错误: 使用未分配的局部变量“variable name” 我知道这个错误的确切含义以及如何解决它。但我想知道的是 一个已声明但未赋值的变量不应该有值吗?像空的图像 2.为什么它甚至不允许比较变量?它可以简单地说它不匹配 一个已声明但未赋值的变量不应该有值吗?像'Image'的null 不,这不是语言的定义方式。局部变量在C或大多数其他语言中没有默认值,但决不是所有 2.为什么它甚至不允许比较变量?它可以简

此代码:

int a;
if(a==1){ do something}

这些代码生成错误:

使用未分配的局部变量“variable name”

我知道这个错误的确切含义以及如何解决它。但我想知道的是

一个已声明但未赋值的变量不应该有值吗?像空的图像 2.为什么它甚至不允许比较变量?它可以简单地说它不匹配

一个已声明但未赋值的变量不应该有值吗?像'Image'的null 不,这不是语言的定义方式。局部变量在C或大多数其他语言中没有默认值,但决不是所有

2.为什么它甚至不允许比较变量?它可以简单地说它不匹配


因为您试图读取一个从未赋值的变量的值,这在C中定义为一个bug。因此,它提醒您注意这个bug。

或者大多数其他语言大多数,或者至少?@zerkms:我所熟悉的大多数高级语言都不会将默认值分配给局部变量-C、Java、C。。。在我的日常经验中,JavaScript是个例外,它默认为未定义@ZrkMS:显示我的C++有多么荒谬,已经超过20年了。C++让你使用未分配的局部变量,但不是所有编译器都初始化它们。编译器为变量分配的内存位置恰好有零。使用未初始化的变量通常是一个bug。当未初始化的变量可能包含随机数据时,它可能起源于C/C++。
Image img;
   if(img!=null){do something}