C#动作/代表风格问题

什么被认为是更好的事件定义样式:

public event Action OnNumberChanged; 

要么

 public delegate void DNumberChanged(object sender, double number); public event DNumberChanged OnNumberChanged; 

第一个需要较少的输入,但是委托者给出了参数的名称。 当我打字时,我认为2号是赢家,但我可能错了。

编辑:一个不同的(第三)方法是赢家。 参见下文。

不是1或2.第三种选择是胜利者

 public event EventHandler NumberChanged; 

您打破了许多用于在C#中进行开发的样式指南,例如使用不扩展EventArgs的事件args的类型。

是的,你可以这样做,因为编译器不关心。 但是,阅读代码的人会做WTF。

如果您不需要,请不要创建新类型。 我认为这更好:

 public event Action OnNumberChanged; 

ActionFunc委托系列存在的原因是为了达到这个目的,并减少开发人员创建新委托类型的需要。

通常我坚持使用EventArgs派生类作为参数。 它使代码更加一致。

我上课了:

 public class ApplyClickedEventArgs : EventArgs { ... } 

和处理程序:

 void cpy_ApplyClicked(object sender, ApplyClickedEventArgs e) { ... } 

声明是:

 public event EventHandler ApplyClicked; 

与所有关于编码风格的问题一样。 选择您喜欢的或您的团队喜欢的,并在整个项目中保持一致。 只要每个人都需要能够有效地阅读它,你就可以了。

我认为选项1更好,如果我选择,但IIRC,事件的官方指南声明你的第二个参数必须是一个名为XxxEventArgs的类,并且应该在其inheritance链中有EventArgs