我偶然看到一些代码,这家伙通过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。