Tipi di variabili annullabili - Membro .value
Domanda
Mi chiedevo: quando avrei voluto usare il membro .Value su un tipo nullable invece di chiamare semplicemente la variabile stessa?
per esempio ..
bool? b = true;
perché dovrei usare b.Value per ottenere il valore invece di usare semplicemente b? Quali vantaggi o funzioni aggiunge la chiamata .Value?
Soluzione
La proprietà value è 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 fare riferimento a Value. Ad esempio, se si desidera assegnare il valore di una Nullable a un bool ordinario, è necessario fare riferimento al suo valore:
bool? nullableBool = null;
if (nullableBool.HasValue)
{
bool realBool = nullableBool.Value;
}
Tuttavia, il seguente non verrà compilato:
bool? nullableBool = true;
bool realBool = nullableBool; // Won't work
Altri suggerimenti
.Value restituisce un bool piuttosto che un bool? che ti permetterà di usarlo come parametro per funzioni che non prevedono tipi nullable.
Quando si desidera utilizzare metodi / proprietà del tipo sottostante. Non si applica davvero al bool. Permettetemi di illustrare con DateTime
:
DateTime? d;
int month = d.Value.Month;
Non puoi accedere alla proprietà Month direttamente da d, perché DateTime? non ha questa proprietà.
Per me non è tanto valore quanto è la proprietà "HasValue" che trovo utile
L'unica differenza è che sono 2 tipi diversi. Se hai un bool? allora è un tipo nulla di bool.
Se chiami b.Value stai effettivamente restituendo un bool e non un bool? .
Sottile, ma quando hai bisogno della versione non nullable dell'oggetto, usa la proprietà .Value.