Operador Condicional NULL ?. en C#

0
1620

En el desarrollo de software, una buena práctica antes de invocar a los miembros de un objeto es comprobar si el mismo fue instanciado correctamente. Para esto, comprobamos si su valor es diferente de null, si es verdadero, podemos usar sus miembros. De esta forma, evitamos que el compilador genere una excepción de tipo NullReferenceException, que detendría la ejecución del programa.

El Operador Condicional ?. es una forma abreviada de comprobar si el valor de un objeto es null, antes de tener acceso a sus miembros y hacer uso de ellos. La sintaxis es la siguiente:

Objeto?.Miembro

Que es equivalente a:

if (Objeto != null)
   Objeto.Miembro

En el siguiente ejemplo tenemos una clase llamada Persona, con una sola propiedad: Nombre. El método MostrarNombre muestra en pantalla el nombre de la persona.

static void MostrarNombre(Persona persona)
{
    if (persona != null)
       Console.WriteLine(persona.Nombre);
}

Con el uso del operador condicional null el resultado es el mismo:

static void MostrarNombre(Persona persona)
{
    Console.WriteLine(persona?.Nombre);
}

Podemos también usar múltiples operadores condicionales de forma combinada. El siguiente código es valido:

static void MostrarCiudadDireccion(Persona persona)
{
    Console.WriteLine(persona?.Direccion?.Ciudad);
}

En el caso de que persona sea null, el operador ?. no permite el acceso a Direccion ni Ciudad.

Referencias

?. y ?[]: operadores condicionales NULL (C# y Visual Basic)