我绝对不能硬编码数据类型.我需要严格的数据输入.我必须使用TValue a <= TValue b.再一次,绝对没有办法去做(双)a.这是基本库实现的一部分.关于泛型值的唯一具体事情是它们是静态类型.IComparable和其他接口似乎不起作用.
Dav*_*ton 43
为什么IComparable不能为您服务?
您可能无法获得使用"<"和">"符号的语法糖,但您可以检查CompareTo的结果是否小于或大于0,这将为您提供相同的信息.
你甚至可以编写一个很好的扩展方法,以便更容易使用.
static void Main(string[] args)
{
Console.WriteLine(1.IsGreaterThan(2));
Console.WriteLine(1.IsLessThan(2));
}
public static bool IsGreaterThan<T>(this T value, T other) where T : IComparable
{
return value.CompareTo(other) > 0;
}
public static bool IsLessThan<T>(this T value, T other) where T : IComparable
{
return value.CompareTo(other) < 0;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 19
只需使用System.Collections.Generic.Comparer<T>.Default.Compare(x,y)- 并查找负,正和0返回值.
这支持IComparable<T>和IComparable,并且适用于类,结构和Nullable<T>结构.
| 归档时间: |
|
| 查看次数: |
14718 次 |
| 最近记录: |