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'

Scrivere in cinese usando i pinyin sul Mac

Si avvisa la gentile clientela che questo post sarà ad alto tenore informatico livello utonto . Per questo spero sarà utile a chi deve risolvere in modo facile il problema dello scrivere lettere latine pinyin (con i cosidetti toni). Questo metodo inoltre sarà utile per scrivere la trascrizione in romaji di tutte le pronunce delle parole giapponesi (con gli allungamenti). Mi dispiace affiancare questi due linguaggi che tanto meritano una trattazione separata per storia e uso attuale, però lo scopo del post è arrivare in velocità alla soluzione per chi scrive e legge solitamente in italiano col proprio mac, non per i linguisti...