在 .NET 中,如果我正在实现一个包含事件的接口,但该事件对我的对象没有意义(假设它是一个更改事件并且我正在编写一个不可变对象),那么我可以只为add
和remove
-- 一个空实现。这避免了为我永远不会使用的委托字段分配存储空间,也避免了“事件从不使用”编译器警告,所以这是一个全面的胜利。
public event EventHandler Changed {
add {}
remove {}
}
当我在 WinRT 类(从 FrameworkElement 继承)中尝试相同的事情时,我在访问器上收到编译器错误add
:“并非所有代码路径都返回值”。
如何从add
访问器返回值?它应该返回什么?
更新:显然这个问题只适用于 WinRT 事件(例如,如果你正在实现一个包含事件的 WinRT 接口)。如果您正在编写一个普通的旧 CLR 事件,则上述语法有效。