我正在注册我班上的一个活动,并且按照惯例,我很懒,只使用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
}
}
在什么情况下委托创建是多余的,委托创建何时适当?
感谢。
答案 0 :(得分:5)
我认为那是重构!告诉你那行
MyValueChanged += new EventHandler<MyValueChangedArgs>(HandleMyValueChanged);
可以缩短,编译器将推断事件处理程序创建和TEventArgs类型参数...
在什么情况下代表 创造多余,什么时候 代表创作合适吗?
关于设计器生成的代码......
答案 1 :(得分:5)
很抱歉。我们在产品计划中没有时间在匿名方法添加到C#时生成更短的代码。
我总是编辑生成的代码以删除额外的语法。