Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
a használat megköveteli, hogy a "tag" adattag legyen
Megjegyzések
A C3918 eseményekkel kapcsolatos okokból is előfordulhat.
Példák
A C3918 azért fordulhat elő, mert az aktuális környezetben osztálytagra van szükség. Az alábbi példa C3918-at hoz létre.
// C3918.cpp
// compile with: /clr /c
public ref class C {
public:
System::Object ^ o;
delegate void Del();
event Del^ MyEvent {
void add(Del^ev) {
if ( MyEvent != nullptr) {} // C3918
if ( o != nullptr) {} // OK
}
void remove(Del^){}
}
};
A C3918 akkor is létrejön, ha null értékre próbál ellenőrizni egy triviális eseményt (az esemény neve többé nem biztosít közvetlen hozzáférést az esemény háttértárának delegáltja számára).
Az alábbi példa C3918-at hoz létre.
// C3918_2.cpp
// compile with: /clr /c
using namespace System;
public delegate int MyDel(int);
interface struct IEFace {
event MyDel ^ E;
};
ref struct EventSource : public IEFace {
virtual event MyDel ^ E;
void Fire_E(int i) {
if (E) // C3918
E(i);
}
};
C3918 akkor is előfordulhat, ha helytelenül feliratkozik egy eseményre. Az alábbi példa C3918-at hoz létre.
// C3918_3.cpp
// compile with: /clr /c
using namespace System;
public delegate void del();
public ref class A {
public:
event del^ e {
void add(del ^handler ) {
d += handler;
}
void remove(del ^handler) {
d -= handler;
}
void raise() {
d();
}
}
del^ d;
void f() {}
A() {
e = gcnew del(this, &A::f); // C3918
// try the following line instead
// e += gcnew del(this, &A::f);
e();
}
};
int main() {
A a;
}