Share via


Derleyici Uyarısı (düzey 1) C4803

'method' : raise yöntemi, 'event' olayının depolama sınıfından farklı bir depolama sınıfına sahip

Olay yöntemleri, olay bildirimiyle aynı depolama sınıfına sahip olmalıdır. Derleyici, depolama sınıflarının aynı olması için olayın yöntemlerini ayarlar.

Bir arabirimden olay uygulayan bir sınıfınız varsa bu uyarı oluşabilir. Derleyici, arabirimdeki bir olay için örtük olarak bir raise yöntemi oluşturmaz. Bu arabirimi bir sınıfta uyguladığınızda, derleyici örtük olarak bir raise yöntemi oluşturur ve bu yöntem sanal olmaz, bu nedenle uyarı. Olaylar hakkında daha fazla bilgi için bkz . olay.

Uyarıyı kapatma hakkında bilgi için bkz. uyarı pragması.

Örnek

Aşağıdaki örnek C4803 oluşturur.

// C4803.cpp
// compile with: /clr /W1
using namespace System;

public delegate void Del();

ref struct E {
   Del ^ _pd1;
   event Del ^ E1 {
      void add (Del ^ pd1) {
         _pd1 = dynamic_cast<Del ^>(Delegate::Combine(_pd1, pd1));
      }

      void remove(Del^ pd1) {
         _pd1 = dynamic_cast<Del^> (Delegate::Remove(_pd1, pd1));
      }

      virtual void raise() {   // C4803 warning (remove virtual)
         if (_pd1)
            _pd1();
      }
   }

   void func() {
      Console::WriteLine("In E::func()");
   }
};

int main() {
   E ^ ep = gcnew E;
   ep->E1 += gcnew Del(ep, &E::func);
   ep->E1();
   ep->E1 -= gcnew Del(ep, &E::func);
   ep->E1();
}