Estoy tratando de crear una abrazadera simple (para poder enlazar los valores de cualquier cosa comparable ... principalmente para tipos de números como int, double, etc.)Tipo genérico anulable utilizado con IComparable. ¿Es posible?
El problema es si hago lo siguiente Me sale un error, pero according to MSDN CompareTo de IComparable se supone que es capaz de manejar valores nulos.
Cita: "Por definición, cualquier objeto se compara mayor que nulo, y dos referencias nulas se comparan entre sí".
public static T Clamp<T>(this T value, T min, T max)
where T : IComparable<T>
{
if (value.CompareTo(max) > 0)
return max;
if (value.CompareTo(min) < 0)
return min;
return value;
}
private Int32? _zip;
public Int32? Zip
{
get
{
return _zip;
}
set
{
_zip = value.Clamp<Int32?>(0, 99999);
}
}
No estoy seguro de por qué no lo hice (valor == nulo)? valor: value.Clamp (0, 99999); para empezar. Creo que solo estaba tratando de obligar a la pinza a hacerlo automáticamente. Pero sí, en realidad tiene más sentido no anularlo ya que está bloqueando. –
Y ahora no funcionará para la cadena))) –