编译器错误 C3797

“override”:事件声明不能具有重写说明符(而应将该说明符放在事件的 add/remove/raise 方法上)

不能使用另一个简单事件(没有显式定义的访问器方法的事件)来重写简单事件。 该重写事件必须使用访问器函数定义其行为。

有关详细信息,请参阅事件

示例

以下示例生成 C3797。

// C3797.cpp
// compile with: /clr /c
delegate void MyDel();

ref class Class1 {
public:
   virtual event MyDel ^ E;
};

ref class Class2 : public Class1 {
public:
   virtual event MyDel ^ E override;   // C3797
};

// OK
ref class Class3 : public Class1 {
public:
   virtual event MyDel ^ E {
      void add(MyDel ^ d) override {}
      void remove(MyDel ^ d) override {}
   }
};