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>.GetType
fa 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
).
ok, grazie per la risposta. ma come pensi sia il modo corretto? perché se userai String tmp = null; tmp.ToString() aumenterà l'eccezione –
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