Share via


?? Operador (Referencia de C#)

Actualización: noviembre 2007

El operador ?? se denomina operador de uso combinado de NULL y se utiliza para definir un valor predeterminado para los tipos de valor que aceptan valores NULL así como los tipos de referencia. Dicho operador devuelve el operando izquierdo si es NOT NULL; en los demás casos, devuelve el operando derecho.

Comentarios

Un tipo que acepta valores NULL puede contener un valor o puede ser indefinido. El operador ?? define el valor predeterminado para devolver cuando un tipo que acepta valores NULL se asigna a un tipo que no acepta valores NULL. Si intenta asignar un tipo de valor que acepta valores NULL a un tipo de valor que no acepta valores NULL sin utilizar el operador ??, se generará un error en tiempo de compilación. Si utiliza una conversión de tipos, y el tipo de valor que acepta valores NULL no está definido en ese momento, 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()
    {
        // ?? operator example.
        int? x = null;

        // y = x, unless x is null, in which case y = -1.
        int y = x ?? -1;

        // Assign i to return value of method, unless
        // return value is null, in which case assign
        // default value of int to i.
        int i = GetNullableInt() ?? default(int);

        string s = GetStringValue();
        // ?? also works with reference types. 
        // Display contents of s, unless s is null, 
        // in which case display "Unspecified".
        Console.WriteLine(s ?? "Unspecified");
    }
}

Vea también

Conceptos

Guía de programación de C#

Referencia

Operadores de C#

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

Otros recursos

Referencia de C#

What Exactly Does 'Lifted' mean?