Sto provando a creare un semplice Clamp (in modo da poter legare i valori di qualsiasi cosa comparabile ... principalmente per i tipi di numero come int, double, ecc.)Tipo generico Nullable utilizzato con IComparable. È possibile?
Il problema è se faccio il seguente Viene visualizzato un messaggio di errore, ma according to MSDN CompareComponable è in grado di gestire valori nulli.
Quote: "Per definizione, qualsiasi oggetto confronta maggiore di null e due riferimenti nulli si confrontano l'uno con l'altro."
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);
}
}
Non sono sicuro del motivo per cui non l'ho fatto (valore == null)? valore: value.Clamp (0, 99999); iniziare con. Credo che stavo solo cercando di forzare il Clamp a farlo automaticamente. Ma sì, in realtà ha più senso non annullarlo visto che sta bloccando. –
E ora non funzionerà per la stringa))) –