我注意到 Visual Studio 有一些特别之处。首先,尝试在函数的某处键入此(C#):
class Foo
{
public void Bar()
{
string s;
int i = s.Length;
}
}
现在,它会立即将s
in标记s.Length
为错误,并说“ Use of unassigned local variable 's'
”。另一方面,试试这个代码:
class Foo
{
private string s;
public void Bar()
{
int i = s.Length;
}
}
它将编译,并用警告在s
in下划线private string s
,说“ Field 'Foo.s' is never assigned to, and will always have its default value null
”。
现在,如果 VS 很聪明并且知道 s 将始终为空,为什么在第二个示例中获取它的长度不是错误?我最初的猜测是,“如果编译器根本无法完成它的工作,它只会给出一个编译错误。因为从技术上讲,只要你从不调用 Bar(),代码就会运行,这只是一个警告。” 除了解释被第一个例子无效。只要您从不调用 Bar(),您仍然可以运行代码而不会出错。那么给了什么?只是一个疏忽,还是我错过了什么?