當我聲明一個集合初始值設定項時,我的速度有點快,並且以編譯的東西結束,但運行時失敗。我的問題是我寫的是什麼,爲什麼編譯?這個測試重現該問題:收集初始值設定項,編譯但拋出異常
[TestFixture]
public class ExploratoryTests
{
[Test, Ignore]
public void Test()
{
try
{
var test = new TestClass
{
ListOfStrings = { "hello", "world", "!" }
};
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public class TestClass
{
public List<string> ListOfStrings { get; set; }
}
}
這將打印錯誤:對象引用不設置到對象的實例。 我的意思是用new List<string> { "hello", "world", "!" }
初始化ListOfStrings。這運行良好。
我已經嘗試過搜索,但我不知道這個結構被稱爲什麼。我搜索了一些沒有運氣的C#書籍。我尋求的幫助是這個構造的一個名稱,並且是一個解釋它應該用於什麼以及爲什麼編譯的指針的指針。
在此先感謝! :)
封面的背後,你的財產清單 ListOfStrings指指向一些內存。當你不用new關鍵字進行初始化時,指針要麼包含一個無效值,要麼指向尚未分配的內存(這就是錯誤信息試圖告訴你的)。它編譯是因爲它沒有真正嘗試寫入該內存位置,直到運行該程序。 –
Duston
@Duston,「指針」等是完全錯誤的詞彙表,因爲我們正在談論託管語言。 –