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!

Oreo Etichetta

Oggi spieghiamo come leggere l'etichetta di un prodotto alimentare! visto che la nostra parte presissima per i pc ha rotto momentaneamente le scatole, è meglio tornare alle cose serie, ovvero cibo . Eccoci di nuovo con i nostri oreo ( perdonate la nostra fissa per sti biscotti ma ci hanno scioccato abbastanza),però questa volta saremo più tecnici. La confezione blu profondo ( come il film : vorrebbe far paura al consumatore forse ??!? ) sullo scaffale era attraente e le forti immagini ammalianti: non potevamo non commentarla! Tralasciando le istruzioni d'uso particolari, in secondo luogo abbiamo notato la fantastica percentuale di cacao di cui si vanta grazie ad un bel punto esclamativo! 7% -.- beh non sembra una gran cosa, tenendo conto che il biscotto si presenta di un colore scurissimo, quasi nero. Ma cosa da quel bel colore?? ( sempre se si possa considerare bello visto che è colore.. hem) Ma per capire meglio è necessario leggere l'etichetta giusto? Notiamo che l'