我有一个函数来验证一个数字是否落在另外两个数字a和b之间.对于双打这个函数看起来像这样:
public static bool IsBetween(this double num, double minValue, double maxValue)
{
return (num >= minValue && num <= maxValue)
|| (num >= maxValue && num <= minValue);
}
Run Code Online (Sandbox Code Playgroud)
然而,这里的问题是我需要能够检查整数或小数是否在此范围内.所以我必须指定一个带签名的重载:
public static bool IsBetween(this int num, double minValue, double maxValue)
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法通过添加T从IComparable继承的地方来实现这种通用性.这是我正在寻找的:
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);
}
Run Code Online (Sandbox Code Playgroud)
我可能会尝试将所有内容都投入,double但如果所有值都是整数或小数,那么这将是一种过度杀伤.
你写这个:
public static bool IsBetween <T, K>(this T num, K minValue, K maxValue)
where T : IComparable
where K : IComparable
{
// ...
Run Code Online (Sandbox Code Playgroud)
话虽这么说,你可能想用IConvertible来代替IComparible,因为你正在施法.这样可以让您更清晰地转换为常见类型.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |