我似乎遇到问题,将以下lambda表达式的确切含义传达给开发人员,而对这些表达式的理解很少(其中list是.Net泛型列表):
list.Sort((x, y) => x.Name.CompareTo(y.Name));
您如何向其他开发者解释此声明?你会告诉他什么?
编辑:我已经将Linq替换为lambda表达式。
答案 0 :(得分:2)
我会说以下内容:
Sort
是List<T>
类(x, y) => x.Name.CompareTo(y.Name)
是一个 lambda表达式,它是一种向匿名方法声明委托的简便方式。可以将=>
左侧的部分视为方法签名,将右侧的部分视为方法体。方法签名不需要明确键入参数的类型;编译器根据List<T>
的类型计算出来。 Name
属性。NullReferenceException
传递给x
为Name
的排序方法,代码将抛出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)
,另一侧具有返回值的表达式。