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
Action
和Func
委托系列存在的原因是为了达到这个目的,并减少开发人员创建新委托类型的需要。
通常我坚持使用EventArgs派生类作为参数。 它使代码更加一致。
我上课了:
public class ApplyClickedEventArgs : EventArgs { ... }
和处理程序:
void cpy_ApplyClicked(object sender, ApplyClickedEventArgs e) { ... }
声明是:
public event EventHandler ApplyClicked;
与所有关于编码风格的问题一样。 选择您喜欢的或您的团队喜欢的,并在整个项目中保持一致。 只要每个人都需要能够有效地阅读它,你就可以了。
我认为选项1更好,如果我选择,但IIRC,事件的官方指南声明你的第二个参数必须是一个名为XxxEventArgs
的类,并且应该在其inheritance链中有EventArgs
。