2009-07-29 14 views
7

Mi chiedevo: quando vorrei utilizzare il membro .Value su un tipo nullable invece di chiamare semplicemente la variabile stessa?Tipi variabili Nullable - .valore membro

ad es.

bool? b = true;

perché dovrei usare b.Value per ottenere il valore invece di usare solo b? Quale vantaggio o funzione aggiunge la chiamata .Value?

risposta

13

La proprietà valore è di sola lettura e restituirà il tipo di valore effettivo. La proprietà value non può mai essere nulla.

Se si prevede di restituire un valore nullable, selezionare .HasValue e quindi Valore di riferimento. Ad esempio, se si desidera assegnare il valore di una Nullable a un bool ordinaria poi si deve fare riferimento il suo valore:

bool? nullableBool = null; 

if (nullableBool.HasValue) 
{ 
    bool realBool = nullableBool.Value; 
} 

Tuttavia, il seguente no di compilazione:

bool? nullableBool = true; 
bool realBool = nullableBool; // Won't work 
+0

Grande! Ciò ha senso. Molte grazie :)) – Valerie

3

. Valore restituisce un bool anziché un bool? che ti permetterà di usarlo come parametro per funzioni che non si aspettano tipi nullable.

1

L'unica differenza è che sono 2 tipi diversi. Se hai un booster ? quindi è un tipo nullable di bool.

Se si chiama b.Value si sta effettivamente restituendo un bool e non un bool?.

Sottile, ma quando è necessaria la versione non annullabile dell'oggetto, utilizzare la proprietà .Value.

+0

Typo . Suttle = sottile. –

1

Per me non è così tanto valore come il è la proprietà "HasValue" che trovo utile

2

Quando si desidera utilizzare i metodi/proprietà del tipo sottostante. Non si applica davvero al bool. Permettetemi di illustrare con DateTime:

DateTime? d; 
int month = d.Value.Month; 

Non è possibile accedere proprietà Mese direttamente da d, perché DateTime? non ha questa proprietà

Problemi correlati