Supponiamo di avere seguente codice:Perché C# 6.0 non consente di impostare le proprietà di una struttura nullable non nulla quando si utilizza l'operatore di propagazione Null?
struct Article
{
public string Prop1 { get; set; }
}
Article? art = new Article();
art?.Prop1 = "Hi"; // compile-error
L'errore di compilazione è
CS0131 Il lato sinistro di una cessione deve essere una variabile, proprietà o indicizzatore.
In realtà art?.Prop1
è una proprietà e deve essere considerato un compito valido!
Non vedo alcun problema con l'assegnazione di rendere questo codice non valido.
Perché C# 6.0 non consente di impostare le proprietà di una struttura nullable non nulla?
In alternativa qualsiasi suggerimento per un codice di linea per rendere valido il compito sarebbe apprezzato.
Rimuovere il punto interrogativo nella tua riga 'art? .Prop1 =" Ciao ";' e il tuo compito non dovrebbe generare un errore. Rendilo 'art.Prop1 =" Ciao ";' –
@ K.AlanBates Vuole in particolare utilizzare l'operatore di propagazione nullo. – Servy
Le strutture sono presenti in C# solo per rendervi la vita interessante. Prova 'Elenco articoli = nuovo Elenco {nuovo Articolo()}; article [0] .Prop1 = "test"; '- forse riconsidererai l'uso delle strutture in quel punto :). –