gpt4 book ai didi

c# - 表达式 Lambda 与语句 Lambda

转载 作者:可可西里 更新时间:2023-11-01 03:04:23 25 4
gpt4 key购买 nike

从根本上说,单行表达式 lambda 和语句 lambda 之间有什么区别吗?以下面的代码为例:

private delegate void MyDelegate();

protected static void Main()
{
MyDelegate myDelegate1 = () => Console.WriteLine("Test 1");
MyDelegate myDelegate2 = () => { Console.WriteLine("Test 2"); };

myDelegate1();
myDelegate2();

Console.ReadKey();
}

虽然我更喜欢第一个,因为我发现括号很难看,但两者之间有什么不同吗(除了关于多行语句需要括号的明显部分之外)?

最佳答案

多语句 lambda 需要语句 lambda。此外,表达式提供程序(如 LINQ to SQL)不支持语句 lambda。在 .NET 4.0 之前,.NET Framework 不支持语句表达式树。这是在 4.0 中添加的,但据我所知没有提供者使用它。

Action myDelegate1 = () => Console.WriteLine("Test 1");
Expression<Action> myExpression = () => { Console.WriteLine("Test 2") }; //compile error unless you remove the { }
myDelegate1();
Action myDelegate2 = myExpression.Compile();
myDelegate2();

否则它们是相同的。

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

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