lambda表达式的通信问题

时间:2011-03-01 06:16:32

标签: linq lambda communication expression

我似乎遇到问题,将以下lambda表达式的确切含义传达给开发人员,而对这些表达式的理解很少(其中list是.Net泛型列表):

list.Sort((x, y) => x.Name.CompareTo(y.Name));

您如何向其他开发者解释此声明?你会告诉他什么?

编辑:我已经将Linq替换为lambda表达式。

3 个答案:

答案 0 :(得分:2)

我会说以下内容:

  • 这不是LINQ。 SortList<T>
  • 中定义的方法
  • (x, y) => x.Name.CompareTo(y.Name)是一个 lambda表达式,它是一种向匿名方法声明委托的简便方式。可以将=>左侧的部分视为方法签名,将右侧的部分视为方法体。方法签名不需要明确键入参数的类型;编译器根据List<T>的类型计算出来。
  • Sort将调用委托引用的方法对列表中的对象对重复,以确定排序顺序
  • 在这种特殊情况下,它将比较对象的Name属性。
  • 如果NullReferenceException传递给xName的排序方法,代码将抛出null

答案 1 :(得分:2)

阅读以下声明,其含义将很明确 -

Sort the list, such that for all x & y in the list, x.Name is compared to y.Name

答案 2 :(得分:1)

Sort()方法接受一个委托(一个方法),它接受两个参数并返回一个整数,指定第一个参数与第二个参数的比较方式。委托是从lambda表达式创建的,该表达式具有运算符=>,其一侧具有参数(x,y),另一侧具有返回值的表达式。