为什么EventArgs构造函数不受保护?

lar*_*moa 7 c# events singleton

我想知道为什么EventArgs构造函数没有受到保护,因为为每个事件分配一个空对象的资源似乎浪费(尽管很小),特别是当有一个EventArgs.Empty明显更高效的单例时.这让我感到惊讶,特别是当.NET的其他部分确实有一个受保护/私有构造函数以避免多个不必要的分配时,例如Comparer<T>.

是否存在创建new EventArgs()(非子类)实际上有意义的情况,或者构造函数是否仅用于简化非经验开发人员的使用?

Joã*_*elo 6

我会说它因为EventArgs类的ComVisible属性设置为true.

这由以下FxCop规则支持:

专门标记为COM可见的引用类型包含公共参数化构造函数,但不包含公共默认(无参数)构造函数.