0Pricing
C# Academy · Lección

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

  1. Introducción a los tipos de valor anulables
  2. Propiedades HasValue y Value
  3. Operadores de fusión de nulos
  4. Nullable en cálculos
← Volver a C# Academy