我对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);
感谢任何有用的建议:)
答案 0 :(得分:1)
根据官方C#语言规范:
8.2块
一个块允许在允许单个语句的上下文中写入多个语句。
block:
{ statement-listopt }
一个块由一个可选的语句列表(第8.2.1节)组成,用大括号括起来。 如果省略语句列表,则该块被称为空。
一个块可能包含声明语句(第8.5节)。 块中声明的局部变量或常量的范围是块。
在一个块中,表达式上下文中使用的名称的含义必须始终相同(第7.6.2.1节)。
块执行如下:
•如果块为空,则控制转移到块的结束点。
•如果该块不为空,则控制权转移到语句列表中。
当控制到达语句列表的结束点时,控制权将转移到块的结束点。
如果块本身可以访问,则可以访问块的语句列表。
如果块为空或者语句列表的结束点可以到达,则可以到达块的结束点。
答案 1 :(得分:0)
区别仅在于语法,它对执行的代码没有影响。使用两种符号编译相同的东西。
在=>
之后,您可以编写一个由{
和}
包围的块语句。您也可以编写一个表达式'代码行'并省略花括号,以防止样板花括号。