我在我的类中注册了一个事件,像往常一样,我很懒,只是使用了Visual Studio2008Pro中内置的自动完成功能,该功能自动创建委托创建及其关联的方法。
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为我生成事件处理程序时,我不会三思而后行,但后来我收到了Refactor的建议!Pro到“删除多余的委派创建”。该建议的结果是:
public abstract class FooBase
{
    protected event EventHandler<MyValueChangedArgs> MyValueChanged;
    protected FooBase()
    {
        MyValueChanged += HandleMyValueChanged;
    }
    private void HandleMyValueChanged(object sender, MyValueChangedArgs e)
    {
        // Some handling logic
    }
}在什么情况下创建委托是多余的,什么时候创建委托是合适的?
谢谢。
发布于 2009-01-31 05:59:50
我认为这是重构!告诉你这句话
MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);可以缩短,编译器将推断事件处理程序的创建和TEventArgs类型参数...
在什么情况下创建委托是多余的,什么时候创建委托是合适的?
在设计器生成的代码上...
发布于 2009-01-31 06:02:08
真对不起。当匿名方法被添加到C#中时,我们没有时间在产品计划中生成更短的代码。
我总是编辑生成的代码以删除多余的语法。
https://stackoverflow.com/questions/498363
复制相似问题