2010-12-28 15 views

risposta

17

Sì, è corretto. Dalla rappresentazione documentation

Il testo del valore della corrente Nullable<T> oggetto se la proprietà HasValue è vero, o una stringa vuota ("") se la proprietà HasValue è falso.

Si noti inoltre che Nullable<T>.Equals e Nullable<T>.GetHashCode non gettare in questo caso, ma che Nullable<T>.GetTypefa tiro. Questo perché Object.Equals, Object.GetHashCode e Object.ToString sono sovrascritti per Nullable<T> ma quello Object.GetType non è (perché non può essere come non è contrassegnato come virtual).

+0

ok, grazie per la risposta. ma come pensi sia il modo corretto? perché se userai String tmp = null; tmp.ToString() aumenterà l'eccezione –

+0

Poiché un tipo nullable con "HasValue" come falso non è un riferimento "null". Da una prospettiva concettuale, un tipo nullable rappresenta un tipo di valore con la possibilità che il valore sia "mancante". Usiamo 'null' per rappresentare quando manca il valore, ma questo non è lo stesso di un riferimento' null'. Si noti che 'tmp.Value' getterà nel caso in cui' tmp' sia un'istanza di un tipo nullable con 'HasValue' come falso. Il valore è mancante, quindi il tentativo di ottenere tale valore dovrebbe e deve essere conseguito di conseguenza. – jason

Problemi correlati