2010-02-04 13 views

Respuesta

5

Usted puede envolver un tipo nativo en una estructura (ejemplo rápido para darle una idea, no probado, un montón de espacio para la mejora):

public struct NullableDouble { 
    public bool hasValue = false; 
    private double _value; 

    public double Value { 
     get { 
      if (hasValue) 
       return _value; 
      else 
       throw new Exception(...); 
     } 
     set { 
      hasValue = true; 
      _value = value; 
     } 
    } 
} 

Claramente, no lo hará obtener el azúcar sintáctico de las versiones más nuevas de C#, es decir, debe usar myNullableDouble.hasValue en lugar de myNullableDouble == null, etc. (Consulte el comentario de Andreas.)

+2

puede usar la comparación, siempre y cuando anule, por ejemplo. operador necesario o implementar la interfaz correcta –

0

Nullable es un tipo genérico. Sin los genéricos, no es posible implementar un modo anulable como ese y no tendría sentido.

0

No se puede, sin adjuntar reglas comerciales a los valores existentes en el tipo de datos. p.ej. int.MinValue se puede usar como marcador de posición, pero ¿qué sucede si necesita este valor? Si tiene una regla donde todos los valores son positivos, podría funcionar, pero no como "anulable".

Cuestiones relacionadas