C#动作/代表风格问题

Jak*_*son 9 .net c# coding-style

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

public event Action<object, double> OnNumberChanged;
Run Code Online (Sandbox Code Playgroud)

要么

public delegate void DNumberChanged(object sender, double number);
public event DNumberChanged OnNumberChanged;
Run Code Online (Sandbox Code Playgroud)

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

编辑:一个不同的(第三)方法是胜利者.参见下文.

小智 16

无论是1还是2.第三种选择是获胜者

public event EventHandler<NumberChangedEventArgs> NumberChanged;
Run Code Online (Sandbox Code Playgroud)

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

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


And*_*are 11

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

public event Action<object, double> OnNumberChanged;
Run Code Online (Sandbox Code Playgroud)

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