Skip to main content

c# 6 e l'operatore di propagazione del null ?.

In C# 6 è presente un nuovo meraviglioso operatore, syntactic sugar introdotto per eliminare costrutti semantici ridondanti inerenti il controllo dei valori null:
immagine dell'operatore di propagazione di null fatta con punto di domanda e punto
Non mi sto chiedendo cosa stia succedendo, questo è l'operatore di propagazione.

Null propagator
Operatore che permette di passare il valore di una proprietà senza fare check espliciti sull'oggetto che la contiene.
Andiamo a vedere cosa vuol dire questo operatore...

Esempio

Da questo codice:
var nomeOperatore =
  linguaggio.Operatori == null ? null : 
  (linguaggio.Operatori.GetPropagatoreNull() == null ? null :
    linguaggio.Operatori.GetPropagatoreNull().Nome);

Si otterrà questa riga di codice:
var nomeOperatore =
  linguaggio.Operatori?.GetPropagatoreNull()?.Nome;
Sono stati sostituiti due operatori condizionali ternari con due propagatori di null, implicitando il ritorno di valori null in caso di oggetto vuoto.

Questo è uno degli esempi più semplicistici: si spera sia difficile avere tanti check sequenziali.

La magia

La magia di questa istruzione è che quando viene applicata a value type trasforma questi in nullable:
var veroFalso = codice?.Vincente;
Infatti se Vincente è un bool, veroFalso sarà ora un Nullable<bool>
Ma non si ferma qui!

Se vogliamo definire un valore di ritorno che non sia null possiamo usare l'operatore binario ??.
var nomeOperatore =
  linguaggio.Operatori?.GetPropagatoreNull()?.Nome ?? "non definito";

Facendo così nel caso una qualunque cosa sia nulla avremo come valore di ritorno "non definito".

L'operatore di propagazione del null è dannoso??

A mio avviso sinceramente può essere molto dannoso in molti casi
  • distrazioni
  • copia/incolla
  • refactoring approssimativi
  • typos
Questi fattori, anche se non dovrebbero capitare, possono rendere difficile la comprensione di bug nei momenti più difficili, sopratutto se il programmatore che ha scritto o che sta interpretando il codice non è esperto, o se il codice ha altri problemi (es: se programmi SOLID non dovrebbe capitarti di usarlo così spesso).

Devo dire che mi piace questo nuovo operatore, anche se è facile intuire i numerosi problemi che porterà a molti quando usato incautamente.

State all'occhio! 

Fonte

Comments

Popular posts from this blog

Imparare a scrivere al PC

Salve a tutti! Oggi un post su richiesta: una breve guida sul come iniziare a scrivere al computer senza guardare la tastiera e usando dieci dita; insomma una mini guida per imparare a scrivere al PC. Io ho imparato circa 2 anni fa, in un paio di mesi, vediamo quanto ci mettete voi!

Le 5 M del caffè: Macchina, Mano e Mente

ovvero: Breve Storia delle macchine per fare il Caffè Rimprendiamo con le 5 M del caffè, tornando cosi a parlare di alimenti... Questo post non è correlato a quello degli animali domestici in quanto questi ultimi risultano alimenti solo in alcune zone vicentine. Ebbene si, nel concreto a volte aiuta più di quanto Dio non faccia Il caffè della Peppina , oltre a berlo alla mattina, lo si farà con qualche attrezzo, giusto? Non si sa con cosa lei lo faccia, probabilmente lascia la possibilità di scelta (ricetta abbastanza imprecisa, forse riconducibile agli ingredienti citati nella terza osteria della famosa canzone ); vediamo allora di darvi una panoramica delle opportunità di preparazione.