2009-01-31 127 views
13

我正在註冊我的課程中的一個活動,並且按照慣例,我很懶,只使用內置於Visual Studio 2008 Pro中的自動完成功能,它自動創建委託創建及其關聯方法。什麼構成'冗餘代表創造'?

public abstract class FooBase 
{ 
    protected event EventHandler<MyValueChangedArgs> MyValueChanged; 

    protected FooBase() 
    { 
     MyValueChanged += 
      new EventHandler<MyValueChangedArgs>(HandleMyValueChanged); 
    } 

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e) 
    { 
     // Some handling logic 
    } 
} 

通常我不認爲兩次時的Visual Studio一族的事件處理程序我,但後來我從重構收到的建議! Pro「刪除冗餘代表創建」。建議結果如下:

public abstract class FooBase 
{ 
    protected event EventHandler<MyValueChangedArgs> MyValueChanged; 

    protected FooBase() 
    { 
     MyValueChanged += HandleMyValueChanged; 
    } 

    private void HandleMyValueChanged(object sender, MyValueChangedArgs e) 
    { 
     // Some handling logic 
    } 
} 

在什麼情況下委託創建是多餘的,什麼時候委託創建合適?

謝謝。

回答

4

我認爲重構!告訴你,行

MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged); 

可以縮短,編譯器會推斷事件處理程序創建和TEventArgs類型參數...

下什麼情況下委託創作 多餘的,當是 委託創建是否合適?

在設計器生成的代碼...

5

對此深感抱歉。當匿名方法添加到C#時,我們沒有時間在產品時間表中生成較短的代碼。

我總是編輯生成的代碼以刪除額外的語法。