.NETでは、イベントを含むインターフェイスを実装しているが、そのイベントがオブジェクトにとって意味をなさない場合(たとえば、変更イベントであり、不変のオブジェクトを記述している場合)add
、remove
--nullの実装。これにより、使用しないデリゲートフィールドにストレージを割り当てることが回避され、「イベントは使用されない」というコンパイラの警告も回避されるため、あらゆる面でメリットがあります。
public event EventHandler Changed {
add {}
remove {}
}
WinRTクラス(FrameworkElementから派生)で同じことを試みると、add
アクセサーでコンパイラエラーが発生します:「すべてのコードパスが値を返すわけではありません」。
add
アクセサから値を返すにはどうすればよいですか?何が返ってくるの?
更新:明らかに、この問題はWinRTイベントにのみ適用されます(たとえば、イベントを含むWinRTインターフェイスを実装している場合)。昔ながらのCLRイベントを作成している場合は、上記の構文が機能します。