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!
{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#.
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.
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 sola propiedad Name:
public class Person
{
public string Name { get; set; }
}Public Class Person
Public Property Name As String
End ClassA continuación, inicializa una instancia de esta clase para mostrar cómo funciona el operador de coalescencia de nulos en escenarios del mundo real.
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 utiliza ?? para proporcionar un valor de reserva:
var name = person.Name ?? "Gerald";Dim name As String = If(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;
}Dim name As String
If person.Name Is Nothing Then
name = "Gerald"
Else
name = person.Name
End IfAl usar ??, esta lógica se reduce a una sola línea. Cuando person.Name es null, se asigna "Gerald"; de lo contrario, person.Name conserva su valor. Ejecuta el programa y confirma que la salida es correcta.
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");Dim name As String = If(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.
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 Is Nothing Then
person.Name = "Gerald"
End IfSimplifica esto con:
person.Name ??= "Gerald";person.Name = If(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.
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;Dim length As Integer = If(person?.Name?.Length, 0)Gerald explica que esto asegura que si person o Name son nulos, 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.
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 ??=)"
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy