什么构成'冗余代表创建'?

时间:2009-01-31 05:54:30

标签: c# .net delegates

我正在注册我班上的一个活动,并且按照惯例,我很懒,只使用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为我制作事件处理程序,但后来我收到了Refactor的推荐!专业“删除冗余代表创建”。建议结果如下:

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

    protected FooBase()
    {
        MyValueChanged += HandleMyValueChanged;
    }

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

在什么情况下委托创建是多余的,委托创建何时适当?

感谢。

2 个答案:

答案 0 :(得分:5)

我认为那是重构!告诉你那行

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

可以缩短,编译器将推断事件处理程序创建和TEventArgs类型参数...

  

在什么情况下代表   创造多余,什么时候   代表创作合适吗?

关于设计器生成的代码......

答案 1 :(得分:5)

很抱歉。我们在产品计划中没有时间在匿名方法添加到C#时生成更短的代码。

我总是编辑生成的代码以删除额外的语法。