我有一个函数可以验证一个数字是否介于其他两个数字 a 和 b 之间。对于双打,这个函数看起来像这样:
public static bool IsBetween(this double num, double minValue, double maxValue)
{
return (num >= minValue && num <= maxValue)
|| (num >= maxValue && num <= minValue);
}
然而,这里的问题是我需要能够检查整数或小数是否在这个范围内。所以我必须用签名指定一个重载:
public static bool IsBetween(this int num, double minValue, double maxValue)
问题:有没有办法通过添加从 IComparable 继承 T 的位置来使其通用。这是我正在寻找的:
public static bool IsBetween <T : IComparable> (this T num, K minValue, K maxValue)
{
return (num >= (T)minValue && num <= (T)maxValue)
|| (num >= (T)maxValue && num <= (T)minValue);
}
我可能会尝试将所有内容都输入,double
但如果所有值都是整数或小数,那将是矫枉过正。