Operadores de fusión de nulidad
Valores predeterminados con ?? y ??=
Operadores de fusión de nulidad es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
Proporcionar un valor alternativo
A menudo querrá utilizar un valor si existe o uno predeterminado si es null. El operador de coalescencia nula ?? hace exactamente eso.
a ?? b significa: utilice a si no es null; de lo contrario, utilice b.
string input = null;
string name = input ?? "Guest";
System.Console.WriteLine(name);Cómo se evalúa ??
El lado izquierdo se evalúa primero. Si no es null, el lado derecho no se evalúa en absoluto.
Gracias a esta evaluación condicional, un valor alternativo costoso solo se calcula cuando realmente se necesita.
string cached = "data";
string value = cached ?? Compute();
System.Console.WriteLine(value);
// Compute() is never called hereFunciona con tipos de valor anulables
?? también extrae el valor de los tipos de valor anulables. Combinar int? maybe con ?? 0 produce un int normal no anulable.
Es una forma clara de convertir int? en int utilizando un valor predeterminado.
int? maybe = null;
int sure = maybe ?? 0;
System.Console.WriteLine(sure);Un ejemplo ejecutable
Este programa lee una configuración que podría ser null y utiliza un valor predeterminado como alternativa. Ejecútelo para ver el valor alternativo en acción.
using System;
class Program
{
static void Main()
{
string theme = null;
string active = theme ?? "light";
Console.WriteLine("Theme: " + active);
}
}Encadenar ??
Puede encadenar varios valores alternativos. La expresión elige el primer valor no null de izquierda a derecha.
a ?? b ?? c prueba primero a, después b y finalmente c como último recurso.
string a = null;
string b = null;
string c = "default";
System.Console.WriteLine(a ?? b ?? c);El operador ??=
La asignación de coalescencia nula ??= asigna el lado derecho solo si el lado izquierdo es actualmente null.
x ??= y es una forma abreviada de if (x == null) x = y; y deja x sin cambios cuando ya tiene un valor.
string config = null;
config ??= "default";
System.Console.WriteLine(config);
config ??= "ignored";
System.Console.WriteLine(config);Inicialización diferida con ??=
Un uso común de ??= es la inicialización diferida: crear un objeto solo la primera vez que se necesita.
En las llamadas posteriores, el campo ya está establecido, por lo que ??= no hace nada.
System.Collections.Generic.List<int> items = null;
items ??= new System.Collections.Generic.List<int>();
items.Add(1);
System.Console.WriteLine(items.Count);Combinar ?. y ??
Combinar ?. con ?? es muy habitual. ?. evita la excepción y ?? proporciona un valor cuando la cadena es null.
user?.Name ?? "Unknown" lee el nombre de forma segura y utiliza "Unknown" como valor predeterminado.
string s = null;
int length = s?.Length ?? -1;
System.Console.WriteLine(length);?? en un programa completo
Aquí, ?. y ?? trabajan juntos para mostrar una longitud segura. Ejecútelo con una cadena null para ver el valor alternativo.
using System;
class Program
{
static void Main()
{
string username = null;
string display = username ?? "anonymous";
Console.WriteLine(display);
Console.WriteLine(username?.Length ?? 0);
}
}?? y lanzamiento ante null
El lado derecho de ?? puede ser cualquier expresión, incluido throw. Esto convierte ?? en una forma compacta de detener la ejecución inmediatamente ante un null inesperado.
name ?? throw new ArgumentNullException(nameof(name)) devuelve el nombre o produce una excepción si es null.
string Validate(string name) =>
name ?? throw new System.ArgumentNullException(nameof(name));Comportamiento asociativo por la derecha
?? es asociativo por la derecha, por lo que a ?? b ?? c se agrupa como a ?? (b ?? c).
En la práctica, esto sigue significando «gana el primer valor no null», pero conviene saberlo al razonar sobre expresiones complejas.
int? a = null;
int? b = null;
int result = a ?? b ?? 99;
System.Console.WriteLine(result);Comprobación rápida
Compruebe cuánto ha comprendido sobre los operadores de coalescencia nula.
Resumen
?? devuelve su lado izquierdo si no es null; de lo contrario, devuelve el lado derecho, y puede encadenarse. ??= asigna solo cuando el destino es null, por lo que resulta ideal para la inicialización diferida.
Combínelos con ?. para gestionar null de forma segura y concisa, e incluso utilice ?? throw para detener la ejecución inmediatamente.
Preguntas frecuentes
¿La lección «Operadores de fusión de nulidad» es gratis?
Sí — el texto completo de «Operadores de fusión de nulidad» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Operadores de fusión de nulidad»?
Valores predeterminados con ?? y ??= Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Operadores de fusión de nulidad»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Tipos de valor anulables
- Operador condicional de nulidad
- Operadores de fusión de nulidad
- Protegerse frente a valores nulos