Uno degli errori più comuni che si commettono nella scrittura del codice è il non controllare se un oggetto sia istanziato o meno prima di utilizzare i membri (metodi, proprietà, e così via). Per controllare se effettivamente l'oggetto è istanziato dobbiamo quindi eseguire una if come ne seguente esempio.
if (obj != null)
{
obj.ExecuteMethod();
}Quando abbiamo molti oggetti da controllare il codice diventa ripetitivo e quindi facilmente soggetto a errori. C# 6 introduce il Null-conditional operatore che introduce una shortcut per evitare di riempire il codice di controlli sull'istanziazione di un oggetto. Nel prossimo esempio vediamo come possiamo scrivere lo stesso codice visto in precedenza.
obj?.ExecuteMethod();
Aggiungendo il carattere ? alla fine della variabile che rappresenta l'oggetto, indichiamo al compilatore che il metodo (o la proprietà o altro ancora) deve essere acceduto solo se l'oggetto non è null. Come si può immaginare, questa funzionalità di C# riduce drasticamente le linee di codice da scrivere, anche in virtù di alcune peculiarità. Prendiamo il seguente codice come esempio.
int? length = people?.Length; int length = people?.Length ?? 0; Person first = people?[0]; int? first = people?[0].Children?.Count();
Nel primo esempio la proprietà Length è di tipo Int32, ma poichè usiamo il null-conditional operator, il risultato dell'istruzione è un tipo Int32? in quanto se people è null l'istruzione tornerà null. Il secondo esempio mostra come ottenere sempre un valore Int32 combinando il null-coalesce operator con il null-conditional operator. Nel terzo esempio possiamo vedere che il null-conditional operator si applica anche agli indexer, mentre il quarto esempio mostra come si possano anche innestare diverse chiamate.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Stop alle password con Azure Managed Identity
Utilizzare noopener e noreferrer nei link HTML
Blazor e InputHidden in .NET 10
Gestire trasferimenti cloud con Azure Storage Mover
Utilizzo delle stepped value functions nel CSS
Nuova modale riconnessione Blazor
Evidenziare una porzione di testo in un pagina dopo una navigazione
Esporre un server MCP con Azure API Management
Controllare la velocità di spostamento su una pagina HTML
Dallo sviluppo locale ad Azure con .NET Aspire
Proteggere l'endpoint dell'agente A2A delle Logic App
Utilizzare il top layer in HTML


