C# Language Operatore Null-Conditional

Esempio

Il ?. l'operatore è zucchero sintattico per evitare verosimili controlli null. È anche noto come operatore di navigazione sicura .


Classe utilizzata nell'esempio seguente:

public class Person
{
    public int Age { get; set; }
    public string Name { get; set; }
    public Person Spouse { get; set; }
}

Se un oggetto è potenzialmente nullo (come una funzione che restituisce un tipo di riferimento), l'oggetto deve prima essere verificato per null per impedire una possibile NullReferenceException . Senza l'operatore condizionale nullo, questo apparirebbe:

Person person = GetPerson();

int? age = null;
if (person != null)
    age = person.Age;

Lo stesso esempio con l'operatore null-condizionale:

Person person = GetPerson();

var age = person?.Age;    // 'age' will be of type 'int?', even if 'person' is not null

Concatenare l'operatore

L'operatore null-condizionale può essere combinato sui membri e sotto-membri di un oggetto.

// Will be null if either `person` or `person.Spouse` are null
int? spouseAge = person?.Spouse?.Age;

Combinazione con l'operatore Null-Coalescing

L'operatore null-condizionale può essere combinato con l' operatore null-coalescing per fornire un valore predefinito:

// spouseDisplayName will be "N/A" if person, Spouse, or Name is null
var spouseDisplayName = person?.Spouse?.Name ?? "N/A";