gpt4 book ai didi

c# - Lambda 表达式常用语法

转载 作者:太空狗 更新时间:2023-10-29 23:59:33 26 4
gpt4 key购买 nike

我能否遵循任何简单的语法或规则在 C# 中构建“lambda 表达式”?我阅读了一些文章并理解了 lambda 表达式是什么,但如果我了解一般的语法或规则将会有所帮助。

最佳答案

有多种表达 lambda 的方法,具体取决于具体情况 - 一些示例:

    // simplest form; no types, no brackets
Func<int, int> f1 = x => 2 * x;
// optional exlicit argument brackets
Func<int, int> f2 = (x) => 2 * x;
// optional type specification when used with brackets
Func<int, int> f3 = (int x) => 2 * x;
// multiple arguments require brackets (types optional)
Func<int, int, int> f4 = (x, y) => x * y;
// multiple argument with explicit types
Func<int, int, int> f5 = (int x, int y) => x * y;

lambda 的签名必须与所用委托(delegate)的签名相匹配(无论是显式的,如上,还是由上下文暗示的,如 .Select(cust => cust.Name)

您可以使用空表达式列表来使用不带参数的 lambdas:

    // no arguments
Func<int> f0 = () => 12;

理想情况下,右边的表达式就是这样;单个表达式。编译器可以将其转换为或者一个委托(delegate) 或者一个表达式树:

    // expression tree
Expression<Func<int, int, int>> f6 = (x, y) => x * y;

但是;您也可以使用语句 block ,但这只能用作 delegate:

    // braces for a statement body
Func<int, int, int> f7 = (x, y) => {
int z = x * y;
Console.WriteLine(z);
return z;
};

请注意,即使 .NET 4.0 Expression 树支持语句主体,C# 4.0 编译器不会为您执行此操作,因此您仍然仅限于简单的Expression 树,除非你用“困难的方式”来做;见my article on InfoQ获取更多信息。

关于c# - Lambda 表达式常用语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com