Jes*_*xer 3 c# interface constraints
我试图定义一个泛型函数来给出一组参数的最大值.它是这样的:
public static TResult Max<TResult>(params TResult[] items)
{
TResult result = items[0];
foreach (var item in items)
{
if (item > result)
result = item;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这一切都很好,除了编译器在"item> result"行上出现问题.我需要的是一种约束TResult有一个>运算符(或<也可以工作)的方法.但是,我没有看到任何现成的接口来执行此操作.由于这是部分排序,这似乎是一项非常常见的任务.我在巨大的.NET文档中遗漏了什么吗?
你可以使用IComparable:
public static IComparable Max<TResult>(params IComparable[] items)
{
IComparable result = items[0];
foreach (var item in items)
{
if (item.CompareTo(result) > 0)
result = item;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |