IDesign编码标准声明“不提供公共事件成员变量。请改用事件访问器。”
我很欣赏有些情况下事件访问器很有用(我认为Control
使用字典只存储分配给节省内存的事件)。但是强制要求这个样板代码始终存在的重点是什么?
编辑:明确
public event EventHandler EventName;
VS。
public event EventHandler EventName { add { ... } remove { ... } }
[见IDesign Coding Standard - 编码标准 - 42]
答案 0 :(得分:3)
委托字段 不是事件 - 它们只是委托字段。它们可以(非常错误地)被外部调用者检查,调用和调用,而相反与事件的设计(通常只能由声明类处理)。
封装允许间接,验证等;都是可取的。而且成本很低。这会影响代码的性能,这是不正常的。
它还允许在 接口 上使用它们;字段不能在接口上声明。
编辑:
这个问题有点不清楚,但如果问题只是字段式事件vs使用委托支持者显式添加/删除......那么这是愚蠢的。不要添加不必要的代码。除非有足够的事件来保证EventHandlerList的实现,否则首选类似事件的事件。
特别是,4.0编译器现在非常明智地执行线程安全(历史上并非如此)。