Operador Condicional Null - Grafico
Programación

Null – Operador condicional en C#

C# 6.0 Introdujo el operador condicional null que permite a los desarrolladores verificar el valor nulo en una cadena de referencia de objetos. El operador condicional null ( ?. ) , Devuelve nulo si algo en la cadena de referencia del objeto es nulo. Esto evita marcar nulos para todos y cada uno de los objetos anidados si todos están referenciados y tienen valores nulos.

Considere que tenemos una clase llamada Student, y que tiene otra propiedad Address de tipo Clase Address. Ahora podemos tener el siguiente fragmento de código para imprimir la HomeAddress.

class Program
{
    static void Main(string[] args)
    {
        Student student = new Student();
        if (student != null && student.Address != null)
        {
            Console.WriteLine(student.Address.HomeAddress);
        }
        else
        {
            Console.WriteLine("No Home Address");
        }
        Console.ReadKey();
    }
}

internal class Student
{
    public Address Address { get; set; }
}
internal class Address
{
    public string HomeAddress { get; set; } = "Av. Lima";
}

Como podemos ver, para evitar la excepción de referencia nula, hemos revisado el null para el student y el student.Address. ya que pueden tener una referencia null como objeto.

Ahora, el bloque de código anterior se puede reescribir usando el operador nulo – condicional (?.) De la siguiente manera:

class Program
{
    static void Main(string[] args)
    {
        Student student = new Student();
        Console.WriteLine(student?.Address?.HomeAddress ?? "No Home Address");

        Console.ReadKey();
    }
}

internal class Student
{
    public Address Address { get; set; }
}
internal class Address
{
    public string HomeAddress { get; set; } = "Av Lima";
}

¿No es realmente agradable? En lugar de revisar cada uno de los objetos, utilizando ?. Podemos verificar toda la cadena de referencia y, siempre que haya un valor nulo, devuelve un valor null. La siguiente imagen ilustra cómo el ?. trabaja.

También funciona bien con los métodos, principalmente cuando activamos cualquier evento. En lugar de escribir

if (AddressChanged != null)
{
     AddressChanged(this, EventArgs.Empty);
}

Utilizando ?. podemos reescribir,

AddressChanged?.Invoke(this, EventArgs.Empty);

Empieza a escribir tu código con este operador, escribe menos y elegante. ??

Desarrollador, Consultor, Arquitecto de Software, con mas de 5 años de experiencia. Interesado en la innovación y preocupado por la calidad del servicio.