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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top