为什么在实际使用它来进行比较之前,我总是需要为字符串变量赋值。 例如: 一些输入 - 对象
string temp;
if (obj== null)
{
temp = "OK";
}
string final = temp;
我得到编译时错误 - 类似于 - 无法使用未分配的变量'temp'。但是字符串变量的默认值为'null',我想使用它。那为什么不允许这样做呢?
答案 0 :(得分:7)
当默认值为空时
对于局部变量,默认值为不 null(或其他任何内容)。它只是未分配。
您可能正在考虑字符串字段(类级别的变量)。那将是null
:
private string temp;
private void M()
{
if (obj== null)
{
temp = "OK";
}
string final = temp; // default tnull
}
但是在方法中,只需使用您需要的值进行初始化:
string temp = null;
答案 1 :(得分:2)
然后将null作为本地变量的默认值:
string temp = null;
这只是一个编译器提示,您可能忘记分配值。通过明确地指定null,你告诉编译器你已经考虑过了。
C#语言规范v.4.0第1.6.6.2节“方法主体和局部变量”声明如下:
方法体可以声明特定于方法调用的变量。这些变量称为局部变量。 ... C#要求局部变量明确赋值才能获得其值。