c# – 将变量赋值为null吗?

在下面我得到一个编译时错误,上面写着“使用未分配的局部变量’匹配’”
如果我只输入字符串匹配;但是当我使用string match = null时它可以工作;
那么有什么区别,一般来说,如果没有立即为字符串分配值,我应该像这样分配给null吗?

string question = "Why do I need to assign to null";
char[] delim = { ' ' };
string[] strArr = question.Split(delim);
//Throws Error
string match;
//No Error
//string match = null;
foreach (string s in strArr)
 {
    if (s == "Why")
      {
         match = "Why";
      }
 }
Console.WriteLine(match);
在确定为值分配之前,C#语言会阻止使用本地语言.在这个例子中,编译器不理解Split的语义,并且必须假设strArr可以是一个空集合,因此循环体可能无法执行.这意味着从最终的赋值角度来看,foreach不会为匹配值赋值.因此,当你到达WriteLine时,它仍然是未分配的

通过将声明更改为字符串match = null,该值将从一开始就标记为明确分配.因此,循环计算无关紧要

翻译自:https://stackoverflow.com/questions/9725343/what-does-assigning-variable-to-null-do

转载注明原文:c# – 将变量赋值为null吗?