繁体   English   中英

Lambda表达式中的花括号与无花括号C#

[英]Curly brackets vs no curly brackets in lambda expression c#

我是C#的新手,大约有1年的经验。 最近介绍了lambda表达式。 我想有一个Action<string> ,它将在MessageBox中显示带有自定义错误文本的错误。 我想知道,两者之间有什么区别?

public static Action<string> Error = s => { MessageBox.Show(s, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); };

public static Action<string> Error = s => MessageBox.Show(s, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

感谢您的帮助:)

根据官方的C#语言规范:

8.2方块

块允许在允许单个语句的上下文中编写多个语句。

block:
    {   statement-listopt   }

块由一个可选的语句列表(第8.2.1节)组成,并用大括号括起来。 如果省略了语句列表,则该块为空。

块可以包含声明语句(第8.5节)。 块中声明的局部变量或常量的范围是该块。

在一个块内,表达式上下文中使用的名称的含义必须始终相同(第7.6.2.1节)。

块执行如下:

•如果该块为空,则控制权转移到该块的终点。

•如果块不为空,则控制权转移到语句列表。

当且如果控制到达语句列表的终点,则控制将转移到块的终点。

如果块本身可访问,则该块的语句列表可访问。

如果块为空或语句列表的终点是可到达的,则该块的终点是可到达的。

区别只是语法上的,对执行的代码没有影响。 使用任何一种表示法编译相同的东西。

=> ,您可以编写一个被{}包围的block语句。 您也可以编写单个表达式 “代码行”并省略花括号,以防止重复使用花括号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM