linq – 传递lambda表达式代替IComparer或IEqualityComparer或任何单一方法接口?

前端之家收集整理的这篇文章主要介绍了linq – 传递lambda表达式代替IComparer或IEqualityComparer或任何单一方法接口?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我偶然看到一些代码,这家伙通过lambda表达式到ArrayList.Sort(IComparer这里)或IEnumerable.SequenceEqual(IEnumerable列表,IEqualityComparer这里),其中期望一个IComparer或IEqualityComparer。

我不能确定,如果我看到了,或者我只是在做梦。我似乎不能找到任何这些集合接受一个Func<>或其方法签名中的委托。

有没有这样的重载/扩展方法?或者,如果不是,是否有可能像这样,并传递一个算法(读委托)在单方法接口,期望?

更新
感谢大家。我也这么想。我一定是在做梦。我知道如何写一个转换。我只是不知道,如果我看到类似的东西,或只是想我已经看到了。

还有另一个更新
看,在这里,我发现了一个这样的实例。我毕竟不是在做梦。看看what this guy is doing here.什么给了?

这里是另一个更新:
好的我明白了。该家伙使用比较< T>超载。尼斯。尼斯,但完全容易误导你。尼斯,虽然。谢谢。

我不太确定什么有用的它是真的,因为我认为在大多数情况下,基本库期望一个IComparer有一个重载,期望一个比较…但只是为了记录:

在.Net 4.5中,他们添加了一个方法来从比较获得一个IComparer:
Comparer.Create

所以你可以传递你的lambda到它,并获得一个IComparer。

原文链接:/javaschema/282585.html

猜你在找的设计模式相关文章