2010-12-28 13 views

Respuesta

17

Sí, es correcto. A partir de la representación documentation

El texto del valor de la corriente Nullable<T> objeto si la propiedad HasValue es cierto, o una cadena vacía ("") si la propiedad HasValue es falsa.

Nótese también que Nullable<T>.Equals y Nullable<T>.GetHashCode no tirar en este caso, sino que lo hace Nullable<T>.GetType tiro. Esto se debe a que Object.Equals, Object.GetHashCode y Object.ToString se han reemplazado por Nullable<T>, pero Object.GetType no (porque no puede ser porque no está marcado como virtual).

+0

bien, gracias por su respuesta. pero ¿cómo crees que es la forma correcta? porque si usará String tmp = null; tmp.ToString() subirá la excepción –

+0

Porque un tipo anulable con 'HasValue' como falso no es una referencia' null'. Desde una perspectiva conceptual, un tipo anulable representa un tipo de valor con la posibilidad de que el valor sea "perdido". Usamos 'null' para representar cuando falta el valor, pero esto no es lo mismo que una referencia' null'. Tenga en cuenta que 'tmp.Value' arrojará en el caso de' tmp' que es una instancia de un tipo anulable con 'HasValue' como falso. El valor falta, por lo que tratar de obtener dicho valor debe y arroja en consecuencia. – jason

Cuestiones relacionadas