2011-01-31 16 views
6

Duplicar posible:
What is the “??” operator for?¿qué significa un doble signo de interrogación en C#

Depuración algo de código y se encontró ?? dentro del código. ¿Qué significa esto?

+6

Esta pregunta se hace más de diez veces en stackoverflow. Algunos de ellos están aqui. 1. http://stackoverflow.com/questions/827454/what-is-the-operator-for 2. http://stackoverflow.com/questions/3925726/coalesce-operator-in-c 3. http: // stackoverflow.com/questions/770096/what-does-mean. – Bipul

Respuesta

16

?? es el null-coalescing operator para tipos anulables.

object obj = canBeNull ?? alternative; 

// equivalent to: 
object obj = canBeNull != null ? canBeNull : alternative; 
+1

+1 De mí, aunque sea un poco quisquilloso, en realidad se lo llama el operador * nulo-coalescente *. (http://msdn.microsoft.com/en-us/library/ms173224.aspx). Es útil incluso cuando no está asignando valores a una variable. –

+1

quería decir "operador nulo-coalescente" ¿verdad? –

+0

¡ejem! Yo si. se sonroja ... Gracias chicos. –

5

http://msdn.microsoft.com/en-us/library/ms173224.aspx consulte esta descripción. es un operador

El operador ?? define el valor predeterminado que debe devolverse cuando un tipo que admite nulos se asigna a un tipo que no admite nulos.

// ?? 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"); 
Cuestiones relacionadas