Il seguente banco di prova genera un'eccezione di riferimento null quando tenta di assegnare Id a un oggetto che è null, poiché al codice manca la "nuova R" prima dell'inizializzatore dell'oggetto.Perché questo inizializzatore di oggetti nidificati genera un'eccezione di riferimento null?
Perché non viene rilevato dal compilatore? Perché è permesso, in quali casi d'uso sarebbe un costrutto significativo?
[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
},
};
}
}
È necessario inizializzare la proprietà Header dell'oggetto R. 'var request = new R {Header = new H {Id = 1}}; – Styxxy
Domanda molto interessante ... non è nemmeno chiaro se il compilatore stia facendo un cast o cosa ... – xanatos
Domanda molto interessante, ma titolo estremamente povero secondo me. Prenderesti in considerazione la possibilità di cambiarlo con l'attuale domanda che stai facendo? – julealgon