理解C#中的Lambda表达式需要掌握以下几个方面:
- Lambda表达式的语法
- Lambda表达式的使用场景和应用
- Lambda表达式与委托的关系
- Lambda表达式的方法推断和参数类型推断
接下来我会逐一讲解。
Lambda表达式的语法
Lambda表达式是一种匿名方法,它通常用于作为委托类型的参数或返回值,可以简化很多代码。Lambda表达式的语法如下:
(parameter_list) => expression
其中,parameter_list表示Lambda表达式的参数列表;expression表示Lambda表达式的返回值。如果参数列表为空,可以省略掉(parameter_list)。
例如,下面是一个简单的Lambda表达式:
x => x * x
这个Lambda表达式表示将输入的参数自乘一次,然后返回结果。
Lambda表达式的使用场景和应用
Lambda表达式的使用场景非常广泛,特别是在LINQ查询中。使用Lambda表达式可以快速地筛选、排序和过滤数据。
例如,下面是一个使用Lambda表达式对一个字符串集合进行排序的示例:
List<string> list = new List<string> { "cat", "dog", "monkey", "elephant" };
list.Sort((x, y) => x.Length.CompareTo(y.Length));
在这个示例中,使用Lambda表达式对字符串进行了排序,按照字符串长度从短到长进行排列。
Lambda表达式与委托的关系
Lambda表达式实际上是封装了一个匿名方法,因此经常用于委托的参数或返回类型。
例如,下面是一个使用Lambda表达式作为委托类型返回值的示例:
Func<int, int> square = x => x * x;
在这个示例中,Func
Lambda表达式的方法推断和参数类型推断
C#编译器具有类型推断功能,也就是说,它可以自动推断出Lambda表达式中的方法体的类型和参数的类型。例如,下面是一个使用Lambda表达式的示例:
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = numbers.Aggregate((x, y) => x + y);
在这个示例中,Lambda表达式 (x, y) => x + y 表示计算两个整数的和,但是并没有指定x和y的类型,编译器会自动推断它们的类型为int。
示例1
下面是一个使用Lambda表达式对一个Person对象进行排序的示例:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
List<Person> list = new List<Person>
{
new Person { Name = "Ben", Age = 20 },
new Person { Name = "Alice", Age = 25 },
new Person { Name = "John", Age = 30 },
};
list.Sort((p1, p2) => p1.Age.CompareTo(p2.Age));
在这个示例中,使用Lambda表达式对Person对象进行了排序,按照年龄从小到大进行排列。
示例2
下面是一个使用Lambda表达式从数组中筛选出大于10的数的示例:
int[] numbers = { 1, 5, 10, 15, 20 };
var result = numbers.Where(x => x > 10);
在这个示例中,使用Lambda表达式从数组中筛选出大于10的数,并将结果存储在result变量中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:理解C#中的Lambda表达式 - Python技术站