IRONSOFTWAREHOME

Operador condicional nulo de C#

{academy-video-youtube({"vid": "eOpmjGF4qxo", "start_time": "0", "title": "Operador Nulo-Condicional en C# (? ¡Operador) Explicado!", "creador": "Gerald Versluis", "longitud": "13m 26s"})}]

En uno de sus vídeos, Gerald Versluis se encontró con una pregunta sobre el signo de interrogación (?) en su código de ejemplo. Esto le llevó a crear un vídeo detallado que explica el operador null-conditional en C#. Si alguna vez te has preguntado qué hace ?. o ?[ ] en C#, el video de Gerald es un gran recurso para entenderlo claramente. Veamos su explicación paso a paso.

Explicación rápida a través de la página Docs

Gerald comienza haciendo referencia a la documentación oficial de Microsoft sobre operadores y expresiones de acceso de miembros. Destaca la sección sobre el operador null-conditional, introducido en C# 6. En el momento de la grabación, C# 9 era la última versión, con C# 10 en el horizonte.

Gerald explica que cuando usas a?.x o a?[index], si a es nulo, toda la expresión se evalúa como nula en lugar de lanzar una NullReferenceException. Por lo demás, recupera el valor normalmente.

Aunque la documentación es útil, Gerald prefiere ejemplos prácticos, por lo que pasa a un entorno de codificación interactivo.

Ejemplo a través de try.dot.net

Para demostrarlo, Gerald pasa a try.dot.net, un entorno interactivo de C#. Menciona que esta herramienta se ejecuta en Blazor, lo que permite a los usuarios ejecutar código C# directamente en un navegador.

Muestra brevemente el ejemplo predeterminado de la secuencia de Fibonacci, que está precargado en try.dot.net, y luego lo borra para iniciar un nuevo ejemplo centrado en el operador null-conditional.

Explicación de los operadores de condicional nulo

Gerald crea una clase Persona sencilla con las siguientes propiedades:

public class Person
{
    // The Name property of the Person
    public string Name { get; set; }
    
    // A reference to another Person object representing the partner
    public Person Partner { get; set; }
    
    // An array representing the Person's hobbies
    public string[] Hobbies { get; set; }
}

Él inicializa un objeto Person como nulo:

// Initialize a Person object as null
Person person = null;

// Attempting to access a property of a null object will throw a NullReferenceException
Console.WriteLine(person.Name);

Ejecutar este código lanza una NullReferenceException porque person es nulo. Para evitarlo, los desarrolladores suelen añadir una comprobación null antes de acceder a las propiedades:

// Check if the person object is not null before accessing its properties
if (person != null)
{
    Console.WriteLine(person.Name);
}

Aunque esto funciona, introduce líneas de código adicionales. Gerald explica cómo el operador null-conditional simplifica esta tarea:

// Using the null-conditional operator to safely access the Name property
Console.WriteLine(person?.Name);

Ahora, si person es nulo, la expresión simplemente devuelve nulo en lugar de fallar.

Operador no condicional en propiedades

Gerald amplía el ejemplo configurando un objeto Person:

// Create a new Person object
Person person = new Person { Name = "Gerald" };

// Access the Name property safely
Console.WriteLine(person?.Name);

Dado que person no es nulo, imprime correctamente "Gerald".

A continuación, muestra un ejemplo anidado:

// Safely access the Name property of the Partner object
Console.WriteLine(person?.Partner?.Name);

Si person.Partner es nulo, toda la expresión se evalúa como nula en lugar de lanzar una excepción. De este modo se evitan condicionantes innecesarios.

Encadenamiento de operadores nulo-condicionales

Gerald explica que los operadores de condición nula pueden encadenarse, lo que hace que el código sea más limpio cuando se trata de objetos profundamente anidados. En lugar de escribir varios controles null, puede utilizar:

// Chain null-conditional operators to safely access nested objects
Console.WriteLine(person?.Partner?.Name);

Si person o person.Partner es nulo, el resultado será nulo, previniendo errores en tiempo de ejecución.

Operadores de condición nula en matrices

Gerald amplía la discusión a arrays y colecciones. Añade una matriz Hobbies a la clase Person y muestra cómo acceder a los elementos de forma segura:

// Safely access the first element of the Hobbies array
Console.WriteLine(person?.Hobbies?[0]);

Aquí, si person o Hobbies es nulo, la expresión se evalúa como nula en lugar de causar una excepción.

Conclusión

El vídeo de Gerald ofrece una visión en profundidad del operador condicional nulo en C#. Al usar ?. y ?[ ], los desarrolladores pueden escribir código más limpio y seguro que evite NullReferenceException. Ya se trate de propiedades, objetos anidados o matrices, el operador condicional nulo hace que el código sea más conciso y legible.

Para una demostración completa, no dejes de ver el vídeo de Gerald Versluis, donde lo explica todo con ejemplos prácticos

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

OR
bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta