由於代碼在對象初始值設定項之前缺少「new R」,因此以下測試用例在嘗試將Id分配給空對象時會拋出空引用異常。爲什麼這個嵌套對象初始值設定項會拋出一個空引用異常?
爲什麼這不被編譯器捕獲?爲什麼它是允許的,哪些用例會成爲一個有意義的構造?
[TestClass]
public class ThrowAway
{
public class H
{
public int Id { get; set; }
}
public class R
{
public H Header { get; set; }
}
[TestMethod]
public void ThrowsException()
{
var request = new R
{
Header =
{
Id = 1
},
};
}
}
您必須初始化R對象的Header屬性。 'var request = new R {Header = new H {Id = 1}};' – Styxxy
非常有趣的問題......它甚至不清楚編譯器是在做一個演員還是什麼...... – xanatos
非常有趣的問題,但在我看來,這個標題非常差。你會考慮將它改爲你所問的實際問題嗎? – julealgon