Operadores de fusión de nulos
Utilice ?? y ??= para proporcionar valores alternativos.
Operadores de fusión de nulos 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.
El operador ??
El operador de fusión de nulos ?? devuelve su operando izquierdo si no es nulo; de lo contrario, devuelve el operando derecho. Es una forma compacta de proporcionar un valor alternativo.
using System;
class Program {
static void Main() {
int? maybe = null;
int value = maybe ?? -1;
Console.WriteLine(value);
}
}?? elige el primer valor no nulo
Si el lado izquierdo tiene un valor, se utiliza ese valor y se ignora el lado derecho.
using System;
class Program {
static void Main() {
int? a = 7;
Console.WriteLine(a ?? 0);
}
}?? con tipos de referencia
?? también funciona con tipos de referencia como string, proporcionando un texto predeterminado cuando el valor es nulo.
using System;
class Program {
static void Main() {
string name = null;
Console.WriteLine(name ?? "Guest");
}
}Encadenar ??
Puede encadenar varios valores alternativos; se utiliza el primero que no sea nulo.
using System;
class Program {
static void Main() {
string a = null, c = "third";
string b = null;
Console.WriteLine(a ?? b ?? c ?? "last");
}
}?? Devuelve el tipo subyacente
Cuando el lado izquierdo es int? y el derecho es int, el resultado es un int simple, ya que null ya no puede aparecer.
using System;
class Program {
static void Main() {
int? maybe = null;
int sure = maybe ?? 0;
Console.WriteLine(sure + 5);
}
}El operador ??=
La asignación de fusión de null ??= asigna el valor del lado derecho solo si el lado izquierdo es null en ese momento.
using System;
class Program {
static void Main() {
int? count = null;
count ??= 10;
Console.WriteLine(count);
}
}??= conserva los valores existentes
Si la variable ya tiene un valor, ??= no hace nada.
using System;
class Program {
static void Main() {
string config = "custom";
config ??= "default";
Console.WriteLine(config);
}
}Inicialización diferida con ??=
??= es perfecto para establecer un valor la primera vez y conservarlo después.
using System;
class Program {
static string cache = null;
static string GetData() {
cache ??= "loaded";
return cache;
}
static void Main() {
Console.WriteLine(GetData());
Console.WriteLine(GetData());
}
}?? frente a GetValueOrDefault
Ambos proporcionan valores alternativos, pero ?? es más flexible: funciona con tipos de referencia y permite que el valor alternativo sea cualquier expresión.
using System;
class Program {
static void Main() {
int? n = null;
Console.WriteLine(n ?? 5);
Console.WriteLine(n.GetValueOrDefault(5));
}
}?? en los argumentos de métodos
Use ?? en línea para proporcionar un valor predeterminado justo donde se necesita un valor.
using System;
class Program {
static void Greet(string name) {
Console.WriteLine("Hello, " + name);
}
static void Main() {
string input = null;
Greet(input ?? "friend");
}
}Comportamiento de cortocircuito
El lado derecho de ?? se evalúa solo cuando el izquierdo es null, de forma similar a la evaluación de cortocircuito.
using System;
class Program {
static int Compute() {
Console.WriteLine("Computed");
return 42;
}
static void Main() {
int? known = 1;
int result = known ?? Compute();
Console.WriteLine(result);
}
}Comprobación rápida
Compruebe su comprensión de los operadores de fusión de null.
Resumen
El operador ?? devuelve el valor izquierdo si no es null; de lo contrario, devuelve el derecho, y se puede encadenar. El tipo del resultado deja de ser anulable cuando se proporciona un valor alternativo que no es null.
??= asigna un valor solo cuando el destino es null, por lo que es ideal para valores predeterminados e inicialización diferida. Ambos evalúan el lado derecho solo cuando es necesario.
Preguntas frecuentes
¿La lección «Operadores de fusión de nulos» es gratis?
Sí — el texto completo de «Operadores de fusión de nulos» 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 nulos»?
Utilice ?? y ??= para proporcionar valores alternativos. 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 nulos»?
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
- Introducción a los tipos de valor anulables
- Propiedades HasValue y Value
- Operadores de fusión de nulos
- Nullable en cálculos