有没有可能定义IComparer的匿名实现?
我相信Java允许匿名类被内联定义-- C#呢?
看一下这段代码,我想定义一个自定义的内联IComparer
public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
IComparer<TKey> comparer
)发布于 2011-03-13 19:08:51
不,C#目前不允许内联接口实现;尽管它允许您通过lambda表达式和匿名方法内联创建委托。
在您的情况下,我建议使用一个易于使用此功能的ProjectionComparer,例如列出的here。
发布于 2015-02-16 10:57:40
正如下面的一条注释所指出的,.Net 4.5允许通过Comparer<>类上的静态方法实现这一点,例如,基于类中属性的值比较两个对象:
var comparer = Comparer<KilowattSnapshot>.Create(
(k1, k2) => k1.Kilowatt.CompareTo(k2.Kilowatt) );显然,这可以内联使用,而不是赋值给变量。
发布于 2011-03-13 19:32:38
尽管您不能创建实现接口的匿名类,但在大多数情况下(如排序等),您通常可以使用Comparison Delegate而不是IComparer Interface:
Array.Sort(arr, (x, y) => 1);还有一些内置的IComparer实现,比如Comparer Class或StringComparer Class……
https://stackoverflow.com/questions/5288963
复制相似问题