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

Cosa significa il seguente codice?Una sintassi C# curiosa con un punto interrogativo

E_Week? week= null; 

E 'uguale al seguente codice? Qual è la funzione del '?' firmare qui?

E_Week week= null; 
+3

possibile duplicato di [Che cosa significa "DateTime?" significa in C#?] (http://stackoverflow.com/questions/109859/what-does-datetime-mean-in-c) –

risposta

29

Il codice utilizza il cosiddetto numero nullable type. Un enum, molto simile a un int o a un DateTime, è ciò che è noto come un "tipo di valore", che è necessario per avere sempre un certo valore. I tipi Nullable consentono di trattare i tipi di valore come se consentissero valori nulli.

Ad esempio, questo codice non è valido e non verrà compilato perché enumerazioni non possono essere nulli:

E_Week week = null; 

Ma questo codice è valido:

E_Week? week = null; 

Ed è esattamente lo stesso di questo:

Nullable<E_Week> week = null; 
16

E_Week? è equivalente a Nullable<E_Week>

Vedere here per ulteriori informazioni sui tipi Nullable.

5

La differenza più significativa è che la seconda istruzione non funziona;) Il? in pratica ti dà la possibilità di impostare un valore (in questo caso enum) su null, che normalmente non è possibile ..

Problemi correlati