我注意到了一些關於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