Compartir a través de


?? (operador) (Referencia de C#)

Llame al operador de incorporación y se utilizan al operador de ?? para definir un valor predeterminado para los tipos de valor o tipos de referencia que acepta valores NULL.Devuelve el operando izquierdo si el operando no es null; si no 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

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é medio de Exactly Does “Lifted”?