微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐