我注意到了一些关于Visual Studio的特殊情况。首先,尝试在功能的地方打字(C#):Visual Studio空引用警告 - 为什么没有错误?
class Foo
{
public void Bar()
{
string s;
int i = s.Length;
}
}
现在,马上它将标志着s.Length
的s
作为一个错误,说“Use of unassigned local variable 's'
”。在另一方面,试试这个代码:
class Foo
{
private string s;
public void Bar()
{
int i = s.Length;
}
}
它将编译,并用警告强调在private string s
的s
,称“Field 'Foo.s' is never assigned to, and will always have its default value null
”。
现在,如果VS很聪明,并且知道s将始终为空,那么为什么在第二个示例中获得其长度并不是错误?我最初的猜测是,“如果编译器不能完成它的工作,它只会产生编译错误,因为只要你从不调用Bar(),代码在技术上运行,它只是一个警告。”除了第一个例子解释失效之外。只要你永远不会调用Bar(),你仍然可以无错地运行代码。那么是什么给了?只是疏忽,还是我错过了什么?
s没有全球性的,它是一个实例-领域。 – 2009-09-11 21:02:46