2010-01-15 36 views
24
private enum E_Week 
{ 
    Mon = 0, 
    Tue, 
    . . . 
} 

¿Qué significa el siguiente código?Una curiosa sintaxis de C# con un signo de interrogación

E_Week? week= null; 

¿Es igual al código siguiente? ¿Cuál es la función del '?' ¿Firma aqui?

E_Week week= null; 
+3

posible duplicado de [¿Qué significa "DateTime?" significa en C#?] (http://stackoverflow.com/questions/109859/what-does-datetime-mean-in-c) –

Respuesta

29

Su código está utilizando lo que se llama nullable type. Una enumeración, al igual que una int o un DateTime, es lo que se conoce como un "tipo de valor", que se requiere para tener siempre algún valor. Los tipos anulables le permiten tratar los tipos de valor como si permitieran valores nulos.

Por ejemplo, este código es válido y no compilará porque enumeraciones no pueden ser nulos:

E_Week week = null; 

Pero este código es válido:

E_Week? week = null; 

y es exactamente lo mismo que esto:

Nullable<E_Week> week = null; 
16

E_Week? es equivalente a Nullable<E_Week>

Ver here para obtener más información sobre los tipos Nullable.

5

La diferencia más significativa es que la segunda afirmación no funciona;) ¿La? sign básicamente le da la posibilidad de establecer un valor de tipo (en este caso enum) en nulo, lo que normalmente no es posible ...

Cuestiones relacionadas