以下测试用例在尝试将Id分配给空的对象时抛出空引用异常,因为代码在对象初始值设定项之前缺少"new R".
为什么这不会被编译器捕获?为什么允许这样,用例会是一个有意义的构造?
[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
},
};
}
}
Run Code Online (Sandbox Code Playgroud)