J'essaye de créer une pince simple (de sorte que je puisse lier les valeurs de n'importe quoi comparable ... la plupart du temps pour les types de nombres tels qu'int, double, etc.)Type générique nullable utilisé avec IComparable. C'est possible?
Le problème est si je fais ceci Je reçois une erreur, mais according to MSDN CompareTo IComparable est censé être capable de gérer les valeurs nulles.
Citation: "Par définition, tout objet compare plus de null, et deux références nulles se comparent les unes aux autres."
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);
}
}
Je ne sais pas pourquoi je ne l'ai pas fait (value == null)? valeur: valeur.Clamp (0, 99999); pour commencer. Je suppose que j'essayais juste de forcer la pince à le faire automatiquement. Mais oui, il est effectivement plus logique de ne pas l'annuler, car c'est le serrage. –
Et maintenant ça ne marchera pas pour la chaîne))) –