C# Language Operador condicional nulo


Ejemplo

El ?. El operador es el azúcar sintáctico para evitar verificaciones nulas verbosas. También es conocido como el operador de navegación segura .


Clase utilizada en el siguiente ejemplo:

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

Si un objeto es potencialmente nulo (como una función que devuelve un tipo de referencia), primero se debe verificar si el objeto es nulo para evitar una posible NullReferenceException . Sin el operador condicional nulo, esto se vería así:

Person person = GetPerson();

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

El mismo ejemplo usando el operador condicional nulo:

Person person = GetPerson();

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

Encadenamiento del operador

El operador condicional nulo se puede combinar en los miembros y sub-miembros de un objeto.

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

Combinando con el Operador Nulo-Coalescente

El operador de condición nula se puede combinar con el operador de unión nula para proporcionar un valor predeterminado:

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