Saltar al pie de página
Iron Academy Logo
Aprender C#
Aprender C#

Otras categorías

Comprender el operador de coalescencia nula de C#

{academy-video-youtube({"vid": "aIp0jUr6A24", "start_time": "0", "title": "Entendiendo el Operador de Coalescencia Nula de C# (?? y ??=)", "creador": "Gerald Versluis", "duración": "12m 43s"})}]

El operador de coalescencia de nulos (??) en C# permite a los desarrolladores simplificar la lógica de comprobación de nulos, reduciendo la verbosidad del código y mejorando la legibilidad. En lugar de escribir largas condiciones if-else, este operador proporciona una forma concisa de asignar valores alternativos cuando se encuentra con null. En este artículo, exploraremos en detalle el operador de coalescencia nula siguiendo el vídeo de Gerald Versluis, "Understanding C# Null Coalescing Operator (?? y ??=)" Desglosaremos las secciones clave del vídeo y analizaremos cómo Gerald demuestra esta útil función de C#.

Introducción

Al principio del vídeo, Gerald presenta el operador de coalescencia de nulos como una potente función de C# que reduce significativamente el número de líneas de código necesarias para la comprobación de nulos. Destaca que este operador simplifica las comprobaciones condicionales y hace que el código sea más legible. Para ilustrar sus ventajas, Gerald recorre una aplicación de ejemplo en la que implementa y explica varios casos de uso del operador null coalescing.

Esquema de la aplicación de ejemplo

Gerald comienza configurando una sencilla aplicación de consola. Menciona que, en vídeos anteriores, ha utilizado el sitio web try.dot.net para las demostraciones, pero debido a las limitaciones de la versión (solo admite C# 7), cambia a Visual Studio para Mac. Asegura que los ejemplos funcionarán también en Visual Studio para Windows.

Para preparar la demostración, Gerald crea una clase básica Person con una única propiedad Name:

public class Person 
{
    public string Name { get; set; }
}
public class Person 
{
    public string Name { get; set; }
}

A continuación, inicializa una instancia de esta clase para mostrar cómo funciona el operador de coalescencia de nulos en escenarios del mundo real.

Sustituir Null Check por Null-Coalescing Operator (??)

Gerald demuestra ahora cómo puede utilizarse el operador de coalescencia de nulos (??) para simplificar la lógica de comprobación de nulos. Asigna null a la propiedad Name y luego usa ?? para proporcionar un valor de reserva:

var name = person.Name ?? "Gerald";
var name = person.Name ?? "Gerald";

Gerald explica que antes de este operador, los desarrolladores utilizaban una sentencia if:

string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}
string name;
if (person.Name == null)
{
    name = "Gerald";
}
else
{
    name = person.Name;
}

Usando ??, esta lógica se reduce a una sola línea. Cuando person.Name es null, se asigna "Gerald"; de lo contrario, person.Name retiene su valor. Ejecuta el programa y confirma que la salida es correcta.

Null-Coalescing para lanzar excepciones

A continuación, Gerald explora otro caso de uso: lanzar excepciones utilizando el operador null coalescing. En lugar de proporcionar un valor alternativo, demuestra cómo lanzar una excepción cuando se encuentra con null:

var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");
var name = person.Name ?? throw new ArgumentNullException(nameof(person.Name), "Name cannot be null");

Gerald destaca que esto es especialmente útil cuando se trabaja con parámetros de métodos o propiedades en los que no se debe permitir null. Explica que esta función se introdujo en C# 7 u 8, dependiendo de la configuración del proyecto. Ejecutar el código con un valor null para person.Name resulta en un ArgumentNullException, evitando efectivamente referencias nulas no deseadas.

Asignación compuesta de coalescencia nula (??=)

Gerald pasa a hablar del operador de asignación compuesta de coalescencia de nulos (??=), que proporciona una forma aún más ágil de asignar valores por defecto. En lugar de escribir:

if (person.Name == null)
{
    person.Name = "Gerald";
}
if (person.Name == null)
{
    person.Name = "Gerald";
}

Simplifica esto con:

person.Name ??= "Gerald";
person.Name ??= "Gerald";

Gerald explica que ??= asigna el valor especificado sólo si el operando de la izquierda es nulo. Si person.Name ya tiene un valor, permanece sin cambios. Este operador es especialmente útil para inicializar campos o garantizar que las variables nunca permanezcan nulas.

Combinación con el operador condicional nulo

En la sección final, Gerald demuestra cómo se puede combinar el operador de coalescencia de nulos con el operador condicional de nulos (?.). El operador condicional nulo permite un acceso seguro a las propiedades sin causar un NullReferenceException. Pone un ejemplo:

var length = person?.Name?.Length ?? 0;
var length = person?.Name?.Length ?? 0;

Gerald explica que esto asegura que si person o Name es null, el resultado por defecto es 0 en lugar de lanzar una excepción. Esta combinación resulta útil cuando se trabaja con tipos de referencia anulables o jerarquías de objetos complejas.

Conclusión

A lo largo del vídeo, Gerald Versluis explica eficazmente la potencia del operador de coalescencia de nulos (??) y la asignación compuesta de coalescencia de nulos (??=). Demuestra cómo estos operadores pueden sustituir a las comprobaciones de nulos tradicionales, haciendo que el código sea más conciso y legible. Al aprovechar estas características, los desarrolladores pueden escribir aplicaciones de C# más limpias y eficientes.

Si quieres ver estos conceptos en acción, echa un vistazo al vídeo completo de Gerald Versluis "Understanding C# Null Coalescing Operator (??)" y ??=)"

Hero Worlddot related to Comprender el operador de coalescencia nula de C#
Hero Affiliate related to Comprender el operador de coalescencia nula de C#

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame