0

我正忙于编写自己的集合类型,需要有一个函数 Max 来返回集合中的值,其中值属性之一是最大值或某些条件成立。

所以我试图在一个底层的.net集合上调用 Max(Func<...) ,但我似乎无法让它工作:

public TValue MaxValue(Func<TValue,TValue> func)
{
  return this.valueSet.Max<TValue>(func);
}

但我收到 2 个错误:

Argument 2: cannot convert from 'System.Func<TValue,TValue>' to System.Func<TValue,int>'

'System.Collections.Generic.SortedSet<TValue>' does not contain a definition for 'Max'
 and the best extension method overload 'System.Linq.Enumerable.Max<TSource>(System.Collections.Generic.IEnumerable<TSource>,
System.Func<TSource,int>)' has some invalid arguments

我似乎无法弄清楚我应该在这里做什么......

4

1 回答 1

2

你打电话时:

this.valueSet.Max<TValue>(func);

编译器将此解释为具有一种泛型类型的Max 重载之一。要么明确指出返回值也应该是一个TValue类型:

this.valueSet.Max<TValue, TValue>(func);

或使用隐式类型并让编译器自己整理类型:

this.valueSet.Max(func);
于 2012-07-01T08:38:41.127 回答