1

我正在阅读关于排序列表的教程,我遇到了这行代码

myGenericList.Sort((x, y) => String.Compare(x.name, y.name));

我试过调查这个,但我就是不明白这条线。谁能向我解释一下这条线到底发生了什么?

4

3 回答 3

6

你在anonymous function这里创建一个。

function Sort接受一个 Action 委托,其中提供了两个参数xyfunction下面的实现=>被读作“去”。然后,String.Compare(x.name, y.name)使用提供的参数执行。的返回值String.Compare是函数的结果,这也是用于确定排序顺序的函数List

于 2012-08-06T17:29:05.747 回答
3

有一个重载Sort需要一个Comparison<>委托。lammbda 表达式可以转换为匹配的委托类型,这就是它起作用的原因。

有关详细信息,请参阅比较<> 的 MSDN 文档

在即将推出的 .NET4.5 (Visual Studio 2012) 中,可以IComparer<>非常轻松地从Comparison<>. 这是通过一种新的静态“工厂”方法Comparer<>.Create

于 2012-08-06T17:36:36.757 回答
2

它基本上说:要对 myGenericList 中的 2 个元素(x 和 y)进行排序,请在 x 和 y 的属性“名称”上使用 String.Compare。

于 2012-08-06T17:28:58.063 回答