C#中的匿名函数可以理解为是一个没有名称的函数,可以作为参数传递给其他方法或委托。
大白话来讲,匿名函数就像是一种创建轻量级代码块的方式,不需要定义新的方法,可以直接在调用时编写要执行的代码片段。
在C#中,有三种常用的匿名函数:Lambda表达式、匿名方法和Func/Action委托。
- Lambda表达式 Lambda表达式的语法形式为
(input-parameters) => expression
或者(input-parameters) => { statement; }
。它是一种简洁且易于阅读的方式来表示匿名函数,常用于集合操作和 LINQ 查询等场景。
int[] arr = { 1, 2, 3, 4, 5 }; var result = arr.Where(x => x % 2 == 0);
- 匿名方法 匿名方法是在预定义委托类型后添加方法实现的一种方式。它的语法形式为:
delegate (input-parameters) { statement; }
。与 Lambda 表达式相似,但不如其简洁,被广泛应用于较早版本的 C# 中。
Predicate<int> isEven = delegate(int num) { return (num % 2) == 0; };
- Func/Action委托 Func/Action 是 C# 提供的通用委托类型。相比于前两者,它更具有扩展性和可重用性,并且有一些预定义的返回值类型供用户选择。其语法形式为:
Func<arg1Type, arg2Type, ..., retType> funcName = (arg1, arg2, ...) => expression;
或者Action<arg1Type, arg2Type, ...> actionName = (arg1, arg2, ...) => { statement; };
Func<int, int, int> add = (x, y) => { return x + y; }; int result = add(1, 2);
总结:匿名函数是 C# 中一种高度灵活的编程方式,可以简化代码结构,提高开发效率,也在一定程度上增强了代码的可读性和可维护性。