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}