Lambda表达式和匿名函数
C#-Lambda表达式和匿名函数
表达式lambda
表达式位于 =>
运算符右侧的 lambda 表达式称为“表达式 lambda”。 表达式 lambda 会返回表达式的结果,并采用以下基本形式:
1 | (input-parameters) => expression |
举个例子,我想写一个可计算参数平方值的委托,那么使用 lambda 表达式实现如下。
1 | Func<int, int> func = x => x * x; |
可以发现func中只有一个语句,如果需要更多语句,可以使用到 语句lambda。
语句lambada
语句 lambda 与表达式 lambda 类似,只是语句括在大括号中:
1 | (input-parameters) => { <sequence-of-statements> } |
语句 lambda 的主体可以包含任意数量的语句;但是,实际上通常不会多于两个或三个。
1 | Action<string> greet = name => |
lambda 表达式的输入参数
将 lambda 表达式的输入参数括在=>
运算符左边的括号中。 使用空括号指定零个输入参数:
1 | Action line = () => Console.WriteLine(); |
如果 lambada 表达式只有一个参数,则括号是可选的:
1 | Func<double, double> cube = x => x * x * x; |
当有两个或更多输出参数,需要使用逗号加以分割:
1 | Func<int, int, bool> testForEquality = (x, y) => x == y; |
当编译器无法判断输出参数的类型,你需要 显示指定 类型。例如,当拥有两个不同类型的参数时,你需要指定参数名。
1 | Func<int, string, bool> isTooLong = (int x, string s) => s.Length > x; |
Tips:如果还不知道Action、Func的用法,你需要去补习 C#委托 的知识,这里不再赘述。
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MMMMrD!