2011-05-19 70 views
1

我們應該檢查lambda表達式的傳入參數嗎? 換句話說,我們應該檢查參數o和s嗎?C# - 我們應該檢查lambda中的傳入參數嗎?

class MainWindow : Form /// implementation I 
{ 
    ... 
    private ToolStripMenuItem mnuFileExit = new ToolStripMenuItem(); 

    private void BuildMenus() 
    { 
     ... 
     mnuFileExit.Click += (o, s) => 
     { 
      MessageBox.Show(string.Format("{0} sent this event", o.ToString())); 
      Application.Exit(); 
     }; 
     ... 
    } 
    ... 
} 

class MainWindow : Form /// implementation II 
{ 
    ... 
    private ToolStripMenuItem mnuFileExit = new ToolStripMenuItem(); 

    private void BuildMenus() 
    { 
     ... 
     mnuFileExit.Click += (o, s) => 
     { 
      if (o != null) 
      { 
       MessageBox.Show(string.Format("{0} sent this event", o.ToString())); 
       Application.Exit(); 
      } 
     }; 
     ... 
    } 
    ... 
} 
+0

只是一個簡短的問題,代表真的有必要嗎?從長遠來看,它可能會變成一種代碼味道。我的2美分。 – 2011-05-19 04:09:26

+1

委託可以訪問您的BuildMenus方法中的本地變量。在某些情況下,這將非常方便。 – Allen 2011-05-19 04:22:22

回答

3

您不必將空檢查添加到發件人(o),因爲它是事件發件人。這是mnuFileExit,它不會爲空。

4

無需檢查第一個參數是否爲空;因爲它是發件人,並且始終爲非空。

我不同意選擇參數名稱(os)。通常,第一個參數被命名爲s(用於發件人),第二個參數被命名爲e(用於事件)。

+0

+1用於指出參數名稱。我不得不看兩次。 – 2011-05-19 13:00:36

相關問題