Share via


Operador ?? (Referencia de C#)

Al operador ?? se le llama el operador de uso combinado de NULL. Dicho operador devuelve el operando izquierdo si no es NULL; de lo contrario, devuelve el operando derecho.

Comentarios

Un tipo que acepta valores NULL puede representar un valor del dominio del tipo, o el valor puede no estar definido (en cuyo caso el valor es NULL). Se puede usar la expresividad sintáctica del operador ?? para devolver un valor apropiado (el operando derecho) cuando el operando izquierdo tenga un tipo que acepta valores NULL cuyo valor sea NULL. Si se intenta asignar un tipo de valor que acepta valores NULL a otro que no sin usar el operador ??, se generará un error en tiempo de compilación. Si se usa una conversión y el tipo de valor que acepta valores NULL no está definido actualmente, se producirá una excepción InvalidOperationException.

Para obtener más información, vea Tipos que aceptan valores NULL (Guía de programación de C#).

El resultado de un operador ?? no se considera una constante, incluso aunque sus dos argumentos sean constantes.

Ejemplo

class NullCoalesce
{
    static int? GetNullableInt()
    {
        return null;
    }

    static string GetStringValue()
    {
        return null;
    }

    static void Main()
    {
        int? x = null;

        // Set y to the value of x if x is NOT null; otherwise, 
        // if x = null, set y to -1. 
        int y = x ?? -1;

        // Assign i to return value of the method if the method's result 
        // is NOT null; otherwise, if the result is null, set i to the 
        // default value of int. 
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // Display the value of s if s is NOT null; otherwise,  
        // display the string "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

Vea también

Referencia

operadores de C#

Tipos que aceptan valores NULL (Guía de programación de C#)

Conceptos

Guía de programación de C#

Otros recursos

Referencia de C#

¿Qué significa exactamente "elevado"?