Testcase sau ném một ngoại lệ tham chiếu null, khi nó cố gắng gán Id cho một đối tượng là null, vì mã thiếu "R mới" trước bộ khởi tạo đối tượng.Tại sao bộ khởi tạo đối tượng lồng nhau này ném một ngoại lệ tham chiếu null?
Tại sao điều này không bị trình biên dịch bắt? Tại sao nó được cho phép, trong đó các trường hợp sử dụng sẽ là một cấu trúc có ý nghĩa?
[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
},
};
}
}
Bạn phải khởi tạo thuộc tính Tiêu đề của đối tượng R của mình. 'var request = new R {Header = new H {Id = 1}}; ' – Styxxy
Câu hỏi rất thú vị ... nó thậm chí không rõ ràng nếu trình biên dịch đang thực hiện một dàn diễn viên hay cái gì ... – xanatos
Câu hỏi rất thú vị, nhưng tiêu đề cực kỳ nghèo nàn theo ý kiến của tôi. Bạn có cân nhắc việc thay đổi nó thành câu hỏi thực tế bạn đang hỏi không? – julealgon