2017-08-31 222 views
0

我对C#很新,大约1年的经验。最近引入了lambda表达式。我想要一个Action<string>这将显示错误与自定义错误文本到一个MessageBox。我想知道,是什么样的区别:大括号vs lambda表达式中没有大括号c#

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);

感谢任何有益的建议:)

+0

此外,这将是使用而不是简单的方法本lambda表达式之间的差: '静态无效错误(字符串s) { MessageBox.Show(S,...) } ' –

回答

0

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

8.2块

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

block: 
    { statement-listopt } 

一个块由一个可选的语句列表(§8.2.1)组成,用括号括起来。 如果语句列表被省略,则该块被认为是空的。

块可能包含声明语句(第8.5节)。 块中声明的局部变量或常量的作用域是块。

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

•如果该块是空的,则控制被转移到块的结束点:

如下的块被执行。

•如果该块不为空,控制权将转移到语句清单。

当和如果控制到达语句列表的终点时,控制转移到该块的终点。

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

如果块为空或者语句列表的结束点可到达,则可以访问块的终点。

0

区别仅在于语法,它对执行的代码没有影响。使用任何符号编译同样的东西。

=>之后,您可以编写一个块语句,该语句由{}包围。您也可以编写一个表达式'代码行',并省略大括号,以防止样板花括号。