2017-08-31 225 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

區別僅在於語法,它對執行的代碼沒有影響。使用任何符號編譯同樣的東西。

=>之後,您可以編寫一個塊語句,該語句由{}包圍。您也可以編寫一個表達式'代碼行',並省略大括號,以防止樣板花括號。