¿Cómo podemos implementar un tipo que admite nulo en C# si no teníamos esta característica en C#?Implementación de tipo anulable sin característica de nulos de C#
Respuesta
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
(Consulte el comentario de Andreas.)myNullableDouble.hasValue
en lugar de
myNullableDouble == null
, etc.
Nullable es un tipo genérico. Sin los genéricos, no es posible implementar un modo anulable como ese y no tendría sentido.
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".
- 1. anulable Enum tipo anulable pregunta
- 2. C error # cadena anulable
- 3. Scala restricciones de tipo no permite nulos
- 4. ? (anulable) operador en C#
- 5. Verificando ejemplo tipo es una enumeración anulable en C#
- 6. ¿Qué característica de C# permite el uso de una notación de tipo "literal de objeto"?
- 7. tema tipo anulable con el operador?: Condicional
- 8. Tipo anulable GetType() arroja la excepción
- 9. ¿Cómo maneja el tipo anulable con SqlDataRecord
- 10. tipo anulable y una advertencia ReSharper
- 11. C# Enums: valor anulable o 'desconocido'?
- 12. C#: validación de argumentos:/cadenas vacías nulos
- 13. Expression.GreaterThan falla si un operando es de tipo anulable, otra es no anulable
- 14. ¿Cómo hacer un tipo de valor anulable con .NET XmlSerializer?
- 15. Ayuda con el error genérico C# - "El tipo 'T' debe ser un tipo de valor que no admite nulos"
- 16. Tipo anulable como un parámetro genérico posible?
- 17. doble no es un tipo anulable
- 18. ¿Es posible crear un método genérico de C# que acepte el tipo de valor (anulable) y el tipo de referencia?
- 19. Tipo genérico anulable utilizado con IComparable. ¿Es posible?
- 20. parámetro de tipo genérico y la sobrecarga del método anulable
- 21. ¿Cómo verificar si un parámetro de tipo genérico es anulable?
- 22. Entity Framework no anulable se asigna a una anulable propiedad de entidad
- 23. ¿La mejor forma de enlazar datos entre un control de Winforms y un tipo anulable?
- 24. C# Implementación de Math.Sqrt
- 25. anulable método en el C#
- 26. Despliegue de VS 2010 sin implementación web
- 27. ¿Es esto un error al comparar un tipo anulable con su tipo subyacente utilizando FluentAssertions?
- 28. C# Ganancia de rendimiento que devuelve un tipo anulable desde un SqlDataReader
- 29. Índice de columna anulable
- 30. Implementación de un C#/NET sin un instalador ni ClickOnce
puede usar la comparación, siempre y cuando anule, por ejemplo. operador necesario o implementar la interfaz correcta –