为什么在比较之前将值赋给字符串,当默认为null时

时间:2012-10-16 11:32:24

标签: c# asp.net

为什么在实际使用它来进行比较之前,我总是需要为字符串变量赋值。 例如: 一些输入 - 对象

        string temp;
        if (obj== null)
        {
            temp = "OK";
        }
        string final = temp;

我得到编译时错误 - 类似于 - 无法使用未分配的变量'temp'。但是字符串变量的默认值为'null',我想使用它。那为什么不允许这样做呢?

2 个答案:

答案 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#要求局部变量明确赋值才能获得其值。