我正在阅读关于排序列表的教程,我遇到了这行代码
myGenericList.Sort((x, y) => String.Compare(x.name, y.name));
我试过调查这个,但我就是不明白这条线。谁能向我解释一下这条线到底发生了什么?
你在anonymous
function
这里创建一个。
function
Sort
接受一个 Action 委托,其中提供了两个参数x
和y
。function
下面的实现=>
被读作“去”。然后,String.Compare(x.name, y.name)
使用提供的参数执行。的返回值String.Compare
是函数的结果,这也是用于确定排序顺序的函数List
有一个重载Sort
需要一个Comparison<>
委托。lammbda 表达式可以转换为匹配的委托类型,这就是它起作用的原因。
有关详细信息,请参阅比较<> 的 MSDN 文档。
在即将推出的 .NET4.5 (Visual Studio 2012) 中,可以IComparer<>
非常轻松地从Comparison<>
. 这是通过一种新的静态“工厂”方法Comparer<>.Create
。
它基本上说:要对 myGenericList 中的 2 个元素(x 和 y)进行排序,请在 x 和 y 的属性“名称”上使用 String.Compare。