什么被认为是更好的事件定义样式:
public event Action<object, double> OnNumberChanged;
或
public delegate void DNumberChanged(object sender, double number);
public event DNumberChanged OnNumberChanged;
第一个输入较少,但是委托者给出了参数的名称。当我打字时,我认为2号是赢家,但我可能是错的。
编辑:不同的(第三种)方法是赢家。请阅读以下内容。
答案 0 :(得分:16)
无论是1还是2.第三种选择是赢家
public event EventHandler<NumberChangedEventArgs> NumberChanged;
您打破了许多用于在C#中进行开发的样式指南,例如使用不扩展EventArgs的事件args的类型。
是的,您可以这样做,因为编译器不关心。但是,阅读代码的人会做WTF。
答案 1 :(得分:11)
如果您不需要,请不要创建新类型。我认为这更好:
public event Action<object, double> OnNumberChanged;
存在Action
和Func
委托系列的原因是为了达到这个目的,并减少开发人员创建新委托类型的需要。
答案 2 :(得分:2)
通常我坚持使用EventArgs派生类作为参数。它使代码更加一致。
我有一个班级:
public class ApplyClickedEventArgs : EventArgs
{
...
}
和一个处理程序:
void cpy_ApplyClicked(object sender, ApplyClickedEventArgs e)
{
...
}
声明是:
public event EventHandler<ApplyClickedEventArgs> ApplyClicked;
答案 3 :(得分:1)
与所有关于编码风格的问题一样。选择您喜欢的或您的团队喜欢的,并在整个项目中保持一致。只要每个需要的人都能有效地阅读它,你就可以了。
答案 4 :(得分:0)
我认为选项1更好,如果我选择,但IIRC,事件的官方指南声明您的第二个参数必须是名为XxxEventArgs
的类,并且应该EventArgs
在其继承链中。