Poniższa procedura testowa zgłasza wyjątek o wartości null, próbując przydzielić identyfikator obiektowi, który ma wartość null, ponieważ kodowi brakuje "nowego R" przed inicjalizatorem obiektu.Dlaczego ten zagnieżdżony inicjalizator obiektów generuje wyjątek odwołania o wartości zerowej?
Dlaczego to nie jest przechwycone przez kompilator? Dlaczego jest dozwolone, w którym przypadki użycia byłyby znaczącą konstrukcją?
[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
},
};
}
}
Musisz zainicjować właściwość Header swojego obiektu R. 'var request = new R {Header = new H {ID = 1}};' – Styxxy
Bardzo interesujące pytanie ... nie jest nawet jasne, czy kompilator wykonuje obsadę, czy co ... – xanatos
Bardzo interesujące pytanie, ale bardzo słaby tytuł w mojej opinii. Czy rozważasz zmianę go na pytanie, które zadajesz? – julealgon