2010-11-23 15 views

Respuesta

53

Esto es nullable type. Los tipos anulables permiten value types (por ejemplo, int sy estructuras como DateTime) contener null.

El ? es azúcar sintáctico para Nullable<DateTime> ya que se utiliza con tanta frecuencia.

Para llamar ToString():

if (timstamp.HasValue) {  // i.e. is not null 
    return timestamp.Value.ToString(); 
} 
else { 
    return "<unknown>"; // Or do whatever else that makes sense in your context 
} 
+0

podrías usar el operador '??' en lugar de if/else no? –

+0

@ v.oddou: Sí, aunque en este ejemplo el objeto resultante es un DateTime que queremos formatear como una cadena (y realmente no tiene sentido tener una fecha/hora predeterminada si no hay una almacenada en la estructura que admite nulos). – Cameron

+1

@ v.oddou Idunno - eso sería muchísimo azúcar sintáctico de interrogación para un varibale, ¿no crees? –

-1

de fecha y hora es anulable

5

Eso es un atajo para Nullable<DateTime>. Los tipos de valor, como DateTime no pueden ser nulos; Nullable<> ajusta el tipo de valor para que tenga un objeto con una propiedad HasValue y otras características convenientes.

8

? hace un valor de tipo (int, bool, DateTime, o cualquier otra struct o enum) anulable a través del tipo System.Nullable<T>. DateTime? significa que la variable es System.Nullable<DateTime>. Puede asignar un DateTime o el valor null a esa variable. Para verificar si la variable tiene un valor, use la propiedad HasValue y para obtener el valor real, use la propiedad Value.

Cuestiones relacionadas