favor marque siguiente código¿Funciona el tiempo de Nullable?
DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();
Devuelve String.Empty
.
¿Es correcto?
puede ser que sea mejor que aumente excepción en segunda línea de código
favor marque siguiente código¿Funciona el tiempo de Nullable?
DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();
Devuelve String.Empty
.
¿Es correcto?
puede ser que sea mejor que aumente excepción en segunda línea de código
Sí, es correcto. A partir de la representación documentation
El texto del valor de la corriente
Nullable<T>
objeto si la propiedadHasValue
es cierto, o una cadena vacía (""
) si la propiedadHasValue
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
).
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 –
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