Freigeben über


Fehler und Warnungen im Zusammenhang mit partial Typ- und partial Memberdeklarationen

Sie können auf die folgenden Fehler im Zusammenhang mit Typpartial- und Memberdeklarationenpartial stoßen:

  • CS0260: Fehlender partieller Modifizierer für die Deklaration des Typs; eine weitere partielle Deklaration dieses Typs ist vorhanden.
  • CS0261: Partielle Deklarationen des Typs müssen entweder nur Klassen, nur Strukturen oder nur Schnittstellen beinhalten.
  • CS0262: Partielle Deklarationen des Typs haben Zugriffsmodifizierer, die miteinander in Konflikt stehen
  • CS0263: Partielle Deklarationen des Typs dürfen keine unterschiedlichen Basisklassen angebe.
  • CS0264: Partielle Deklarationen des Typs müssen die gleichen Typ-Parameternamen in der gleichen Reihenfolge aufweisen
  • CS0265: Partielle Deklarationen des Typs weisen inkonsistente Einschränkungen für den Typ-Parameter „type parameter“ auf
  • CS0267: Der „partial“-Modifizierer kann nur unmittelbar vor „class“, „record“, „struct', 'interface“ oder einem Methodenrückgabetyp angezeigt werden.
  • CS0282: Es gibt keine definierte Sortierung zwischen Feldern in mehreren Deklarationen der partieller Klasse oder der Struktur „type“. Um eine Sortierung anzugeben, müssen sich alle Instanzenfelder in derselben Deklaration befinden.
  • CS0501: „member function“ muss einen Text deklarieren, da sie nicht als abstract, extern oder partial markiert ist
  • CS0750: Partielle Member dürfen nicht den Modifizierer „abstract“ aufweisen.
  • CS0751: Partielle Member müssen in einem partiellen class oder einem partiellen struct deklariert werden
  • CS0754: Ein partieller Member darf keine Schnittstellenmethoden explizit implementieren.
  • CS0755: Beide partiellen Methodendeklarationen müssen Erweiterungsmethoden sein, oder keine von beiden darf eine Erweiterungsmethode sein.
  • CS0756: Eine partielle Methode darf nicht über mehrere definierende Deklarationen verfügen.
  • CS0757: Eine partielle Methode darf nicht über mehrere implementierende Deklarationen verfügen.
  • CS0759: Für die implementierende Deklaration der partiellen Methode wurde keine definierende Deklaration gefunden.
  • CS0761: Partielle Methodendeklarationen von method<T> weisen inkonsistente Typ-Parametereinschränkungen auf.
  • CS0762: Auf der Grundlage der Methode kann kein Delegat erstellt werden, da es sich um eine partielle Methode ohne implementierende Deklaration handelt
  • CS0763: Beide partiellen Methodendeklarationen müssen static sein, oder keine von beiden darf static sein.
  • CS0764: Beide partiellen Methodendeklarationen müssen unsafe sein, oder keine von beiden darf unsafe sein
  • CS1067: Partielle Deklarationen müssen die gleichen Typ-Parameternamen und Varianzmodifizierer in der gleichen Reihenfolge aufweisen.
  • CS8142: Beide partiellen Memberdeklarationen müssen dieselben Tupel-Elementnamen verwenden.
  • CS8663: Beide partiellen Memberdeklarationen müssen schreibgeschützt sein, oder keine von beiden darf schreibgeschützt sein
  • CS8796: Die partielle Methode muss über Zugriffsmodifizierer verfügen, da sie einen nicht leeren Rückgabetyp aufweist.
  • CS8795: Der partielle Member muss einen Implementierungsteil aufweisen, weil er über Zugriffsmodifizierer verfügt.
  • CS8797: Die partielle Methode muss über Zugriffsmodifizierer verfügen, da sie „out“-Parameter aufweist.
  • CS8798: Die partielle Methode muss über Zugriffsmodifizierer verfügen, da sie einen „virtual“-, „override“-, „sealed“-, „new“- oder „extern“-Modifizierer hat.
  • CS8799: Beide partiellen Memberdeklarationen müssen identische Zugriffsmodifizierer aufweisen.
  • CS8800: Beide partiellen Memberdeklarationen müssen identische Kombinationen von virtual-, override-, sealed und new-Modifizierern aufweisen.
  • CS8817: Beide partiellen Methodendeklarationen müssen den gleichen Rückgabetyp aufweisen.
  • CS8818: Partielle Memberdeklarationen müssen übereinstimmende ref Rückgabewerte aufweisen.
  • CS8863: Nur eine einzelne partielle Typ-Deklaration darf eine Parameterliste aufweisen
  • CS8988: Der scoped Modifizierer des Parameters stimmt nicht mit der partiellen Definition überein.
  • CS9248: Die partielle Eigenschaft muss über einen Implementierungsteil verfügen.
  • CS9249: Die partielle Eigenschaft muss über einen Definitionsteil verfügen.
  • CS9250: Eine partielle Eigenschaft darf nicht über mehrere definierende Deklarationen verfügen und kann keine automatische Eigenschaft sein.
  • CS9251: Eine partielle Eigenschaft darf nicht über mehrere implementierende Deklarationen verfügen
  • CS9252: Der Eigenschaftenaccessor muss implementiert sein, da er für den Definitionsteil deklariert ist
  • CS9253: Der Eigenschaftenaccessor implementiert keinen Accessor, der im Definitionsteil deklariert ist
  • CS9254: Der Eigenschaftenaccessor muss mit dem Definitionsteil übereinstimmen
  • CS9255: Beide partiellen Eigenschaftendeklarationen müssen denselben Typ aufweisen.
  • CS9256: Partielle Eigenschaftendeklarationen weisen Signaturunterschiede auf.
  • CS9257: Beide partiellen Eigenschaftendeklarationen müssen erforderlich sein, oder keine darf erforderlich sein
  • CS9275: Partielles Mitglied muss über einen Implementierungsteil verfügen.
  • CS9276: Partielles Element muss über einen Definitionsteil verfügen.
  • CS9277: Partielles Element verfügt möglicherweise nicht über mehrere definierende Deklarationen.
  • CS9278: Teilmitglied verfügt möglicherweise nicht über mehrere Implementierungsdeklarationen.
  • CS9279: Partielles Ereignis kann keinen Initialisierer haben.
  • CS9280: Nur die Implementierungsdeklaration eines Teilkonstruktors kann einen Initialisierer aufweisen.

In den folgenden Abschnitten werden die Ursachen und Abhilfemaßnahmen für diese Fehler und Warnungen erläutert.

Partial types (Partielle Typen)

  • CS0260: Fehlender partieller Modifizierer für Deklaration des Typs; eine weitere Teildeklaration dieses Typs ist vorhanden.
  • CS0261: Partielle Deklarationen vom Typ müssen alle Klassen, alle Strukturen oder alle Schnittstellen sein.
  • CS0262: Partielle Deklarationen des Typs weisen widersprüchliche Modifizierer für Barrierefreiheit auf
  • CS0263: Partielle Deklarationen vom Typ dürfen keine unterschiedlichen Basisklassen angeben
  • CS0264: Partielle Deklarationen des Typs müssen die gleichen Typparameternamen in derselben Reihenfolge aufweisen.
  • CS0265: Partielle Deklarationen des Typs weisen inkonsistente Einschränkungen für typparameter 'type parameter' auf.
  • CS0267: Der Modifizierer 'partial' kann nur unmittelbar vor 'class', 'record', 'struct', 'interface' oder einem Methoden- oder Eigenschaftsrücklauftyp angezeigt werden.
  • CS8863: Es kann nur eine einzelne partielle Typdeklaration eine Parameterliste geben.

Ihre partielle Typdeklaration kann dazu führen, dass der Compiler die folgende Warnung ausgibt:

  • CS0282: Es gibt keine definierte Sortierung zwischen Feldern in mehreren Deklarationen teilweiser class oder struct 'Typ'. Um eine Sortierung anzugeben, müssen sich alle Instanzfelder in derselben Deklaration befinden.

Diese Fehler treten auf, wenn Ihre partiellen Typdeklarationen gegen die Regeln für partielle Typen verstoßen.

  • Fügen Sie den partial Modifizierer allen Deklarationen des Typs hinzu, da jeder Teil das Schlüsselwort (CS0260) enthalten muss, nachdem Sie einen Typ auf mehrere Deklarationen aufgeteilt haben.
  • Stellen Sie sicher, dass alle Deklarationen dasselbe Typ-Schlüsselwort verwenden, da das Mischen class, struct, , recordund interface in verschiedenen Teilen desselben Typs nicht zulässig ist (CS0261). Sie sollten einheitliche Zugriffsmodifizierer für alle Deklarationen sicherstellen, indem Sie z. B. alle Teile public oder alle Teile internal anwenden, da widersprüchliche Zugänglichkeit bei verschiedenen Deklarationen für Mehrdeutigkeit bezüglich der beabsichtigten Sichtbarkeit des Typs (CS0262) sorgt.
  • Vergewissern Sie sich, dass alle Deklarationen dieselbe Basisklasse angeben, da ein Typ nur von einer Basisklasse erben kann, sodass mehrere verschiedene Basisklassen konflikte (CS0263).
  • Stellen Sie bei generischen Teiltypen sicher, dass alle Deklarationen dieselben Typparameter in derselben Reihenfolge auflisten, da die Typparameternamen exakt über alle Teile (CS0264) übereinstimmen müssen.
  • Überprüfen Sie, ob die Einschränkungen für Typparameter in allen Deklarationen konsistent sind, denn inkonsistente Einschränkungen würden eine Mehrdeutigkeit darüber schaffen, welche Typen für die Typparameter (CS0265) verwendet werden können.
  • Platzieren Sie das partial Schlüsselwort unmittelbar vor dem Typ-Schlüsselwort (class, record, struct, oder interface), da für die Sprachsyntax diese spezifische Sortierung (CS0267) erforderlich ist.
  • Deklarieren Sie einen primären Konstruktor nur für eine partielle Deklaration, da mehrere primäre Konstruktoren konflikten würden, welche Konstruktorparameter und Initialisierungslogik verwendet werden sollen (CS8863).

Wenn Sie Felder in mehreren Dateien für einen partiellen Strukturtyp deklarieren, sollten Sie alle Felddeklarationen in einer einzelnen Datei konsolidieren, wenn die Reihenfolge des Speicherlayouts wichtig ist, da der Compiler keine bestimmte Reihenfolge garantieren kann, wenn Felder auf mehrere Dateien aufgeteilt werden (CS0282). Alternativ können Sie, wenn die Layoutreihenfolge keine Rolle spielt, den System.Runtime.InteropServices.StructLayoutAttribute Wert mit dem LayoutKind.Auto Wert anwenden, damit die Laufzeit das Layout automatisch optimieren kann.

Partielle Member

  • CS0750: Partielle Member dürfen nicht den Modifizierer „abstract“ aufweisen.
  • CS0751: Partielle Member müssen in einem partiellen class oder einem partiellen struct deklariert werden
  • CS0754: Ein partieller Member darf keine Schnittstellenmethoden explizit implementieren.
  • CS0763: Beide partiellen Methodendeklarationen müssen static sein, oder keine von beiden darf static sein.
  • CS0764: Beide partiellen Methodendeklarationen müssen unsafe sein, oder keine von beiden darf unsafe sein
  • CS8142: Beide partiellen Memberdeklarationen müssen dieselben Tupel-Elementnamen verwenden.
  • CS8663: Beide partiellen Memberdeklarationen müssen schreibgeschützt sein, oder keine von beiden darf schreibgeschützt sein
  • CS8799: Beide partiellen Memberdeklarationen müssen identische Zugriffsmodifizierer aufweisen.
  • CS8800: Beide partiellen Memberdeklarationen müssen identische Kombinationen von virtual-, override-, sealed- und new-Modifizierern aufweisen.
  • CS8818: Partielle Memberdeklarationen müssen übereinstimmende ref-Rückgabewerte aufweisen.
  • CS8988: Der scoped Modifizierer des Parameters stimmt nicht mit der partiellen Definition überein.
  • CS9275: Partielles Mitglied muss über einen Implementierungsteil verfügen.
  • CS9276: Partielles Element muss über einen Definitionsteil verfügen.
  • CS9277: Partielles Element verfügt möglicherweise nicht über mehrere definierende Deklarationen.
  • CS9278: Teilmitglied verfügt möglicherweise nicht über mehrere Implementierungsdeklarationen.

Diese Fehler treten auf, wenn Ihre partiellen Memberdeklarationen gegen die Regeln für partielle Methoden, Eigenschaften, Indexer und Ereignisse verstoßen.

  • Entfernen Sie den abstract Modifizierer aus partiellen Membern, da abstrakte Member abgeleitete Klassen benötigen, um Implementierungen bereitzustellen. Diese Anforderung steht im Konflikt mit dem partiellen Membermuster, bei dem die Implementierung in der Implementierungsdeklaration (CS0750) bereitgestellt wird.
  • Deklarieren Sie Teilmember innerhalb eines Typs, der den partial Modifizierer enthält, da partielle Member nur in Teiltypen (CS0751) vorhanden sein können.
  • Entfernen Sie explizite Schnittstellenimplementierungen aus partiellen Membern, da das zweiteilige Deklarationsmuster nicht mit der expliziten Syntax der Schnittstellenimplementierung (CS0754) kompatibel ist.
  • Schließen Sie den static Modifizierer in beiden Deklarationen konsistent ein, oder lassen Sie ihn weg, da das Mischen statischer und Instanzmitglieder mehrdeutig in Bezug darauf wird, wie das Mitglied aufgerufen wird (CS0763).
  • Schließen Sie den unsafe Modifizierer in beiden Deklarationen konsistent ein oder aus, da inkonsistente unsichere Kontexte Sicherheitsprobleme oder Kompilierungsfehler (CS0764) erzeugen können.
  • Verwenden Sie identische Tupelelementnamen in beiden Deklarationen, da unterschiedliche Namen Verwirrung darüber erzeugen würden, welche Namen beim Verbrauch von Code verfügbar sind (CS8142).
  • Schließen Sie den readonly Modifizierer in beiden Deklarationen konsistent ein oder aus, da das Mischen von Schreib- und Nicht-Readonly-Deklarationen Mehrdeutigkeit darüber erzeugt, ob das Mitglied den Instanzstatus ändern kann (CS8663).
  • Verwenden Sie identische Zugriffsmodifizierer (z. B. public, private, protected oder internal) für beide Deklarationen, da unterschiedliche Zugriffsebenen in Konflikt mit der Sichtbarkeit des Mitglieds (CS8799) geraten würden.
  • Wenden Sie die gleiche Kombination von virtual, override, sealedund new Modifizierern auf beide Deklarationen an, da diese Modifizierer das Vererbungs- und Polymorphismusverhalten steuern, das konsistent sein muss (CS8800).
  • Verwenden Sie übereinstimmende ref Rückgabemodifizierer in beiden Deklarationen, da inkonsistentes Rückgeben-nach-Verweis-Verhalten Typsicherheitsprobleme (CS8818) verursacht.
  • Wenden Sie den scoped Modifizierer konsistent auf Parameter in beiden Deklarationen an, da dieser Modifizierer die Lebensdauer von Bezugsparametern steuert und übereinstimmen muss, um die Speichersicherheit (CS8988) sicherzustellen.
  • Stellen Sie eine Implementierungsdeklaration für jedes Teilmitglied bereit, das eine definierende Deklaration enthält, da partielle Member beide Teile vollständig (CS9275, CS9276) erfordern.
  • Stellen Sie sicher, dass jedes Teilmitglied genau eine Deklaration und eine Implementierungsdeklaration enthält, da mehrere Deklarationen Mehrdeutigkeit darüber erzeugen würden, welche Definition oder Implementierung verwendet werden soll (CS9277, CS9278).

Partielle Methoden

  • CS0501: „member function“ muss einen Text deklarieren, da sie nicht als abstract, extern oder partial markiert ist
  • CS0755: Beide partiellen Methodendeklarationen müssen Erweiterungsmethoden sein, oder keine von beiden darf eine Erweiterungsmethode sein.
  • CS0756: Eine partielle Methode darf nicht über mehrere definierende Deklarationen verfügen.
  • CS0757: Eine partielle Methode darf nicht über mehrere implementierende Deklarationen verfügen.
  • CS0759: Für die implementierende Deklaration der partiellen Methode wurde keine definierende Deklaration gefunden.
  • CS0761: Partielle Methodendeklarationen von method<T> weisen inkonsistente Typ-Parametereinschränkungen auf.
  • CS0762: Auf der Grundlage der Methode kann kein Delegat erstellt werden, da es sich um eine partielle Methode ohne implementierende Deklaration handelt
  • CS1067: Partielle Deklarationen müssen die gleichen Typ-Parameternamen und Varianzmodifizierer in der gleichen Reihenfolge aufweisen.
  • CS8796: Die partielle Methode muss über Zugriffsmodifizierer verfügen, da sie einen nicht leeren Rückgabetyp aufweist.
  • CS8795: Der partielle Member muss einen Implementierungsteil aufweisen, weil er über Zugriffsmodifizierer verfügt.
  • CS8797: Die partielle Methode muss über Zugriffsmodifizierer verfügen, da sie „out“-Parameter aufweist.
  • CS8798: Die partielle Methode muss über Zugriffsmodifizierer verfügen, da sie einen „virtual“-, „override“-, „sealed“-, „new“ oder „extern“-Modifizierer hat.
  • CS8817: Beide partiellen Methodendeklarationen müssen den gleichen Rückgabetyp aufweisen.

Diese Fehler treten auf, wenn Ihre partiellen Methodendeklarationen gegen die Regeln für partielle Methoden verstoßen.

  • Fügen Sie der Methodendeklaration den partial Modifizierer hinzu, oder stellen Sie einen Methodentext bereit, da Methoden ohne Implementierungen als abstract, externoder partial (CS0501) gekennzeichnet werden müssen.
  • Stellen Sie sicher, dass beide Deklarationen die Syntax der Erweiterungsmethode (this Modifizierer für den ersten Parameter) konsistent enthalten oder weglassen, da durch Mischen von Erweiterungs- und Nichterweiterungsdeklarationen inkompatible Methodensignaturen (CS0755) erstellt werden.
  • Entfernen Sie doppelte definierende Deklarationen (die Deklarationen ohne Methodentexte), da jede partielle Methode nur eine Definition (CS0756) aufweisen kann.
  • Entfernen Sie doppelte Implementierungsdeklarationen (die Deklarationen mit Methodentexten), da jede partielle Methode nur eine Implementierung (CS0757) haben kann.
  • Fügen Sie eine entsprechende definierende Deklaration für jede Implementierungsdeklaration hinzu, da jede partielle Methode mit einem Textkörper über eine übereinstimmende Signaturdeklaration ohne Textkörper (CS0759) verfügen muss.
  • Stellen Sie sicher, dass Typparametereinschränkungen über beide Deklarationen hinweg übereinstimmen, da inkonsistente Einschränkungen Verwirrung darüber stiften, welche Typen für die generische Methode (CS0761) gültig sind.
  • Stellen Sie vor dem Erstellen eines Delegaten aus einer Methode eine Implementierungsdeklaration bereit, da Delegaten eine konkrete Methodenimplementierung als Referenz (CS0762) benötigen.
  • Stellen Sie bei generischen Teilmethoden sicher, dass beide Deklarationen dieselben Typparameternamen und Varianzmodifizierer in derselben Reihenfolge verwenden, da inkonspatible Methodendeklarationen (CS1067) nicht übereinstimmende generische Signaturen erstellen.
  • Fügen Sie explizite Zugriffsmodifizierer hinzu (z. B. public, private, protected oder internal), wenn die Methode einen anderen Typ als void zurückgibt, da nicht-void-partielle Methoden definierte Zugänglichkeit haben müssen, um aus anderem Code aufgerufen werden zu können (CS8796).
  • Stellen Sie eine Implementierungsdeklaration bereit, wenn Barrierefreiheitsmodifizierer angegeben werden, da barrierefreie Partielle Methoden Implementierungen aufweisen müssen, die aufgerufen werden müssen (CS8795).
  • Fügen Sie explizite Zugriffsmodifizierer hinzu, wenn die Methode out Parameter hat, da Methoden mit out-Parametern eine definierte Zugriffsberechtigung haben müssen, um aufgerufen werden zu können (CS8797).
  • Fügen Sie explizite Zugriffsmodifizierer hinzu, wenn Sie virtual, override, sealed, new oder extern verwenden, da sich diese Modifizierer auf die Methodensichtbarkeit auswirken und eine explizite Zugriffs-Spezifikation (CS8798) erfordern.
  • Stellen Sie sicher, dass beide Deklarationen denselben Rückgabetyp angeben, da unterschiedliche Rückgabetypen inkompatible Methodensignaturen (CS8817) erstellen.

Partielle Eigenschaften

  • CS9248: Die partielle Eigenschaft muss über einen Implementierungsteil verfügen.
  • CS9249: Die partielle Eigenschaft muss über einen Definitionsteil verfügen.
  • CS9250: Eine partielle Eigenschaft darf nicht über mehrere definierende Deklarationen verfügen und kann keine automatische Eigenschaft sein.
  • CS9251: Eine partielle Eigenschaft darf nicht über mehrere implementierende Deklarationen verfügen
  • CS9252: Der Eigenschaftenaccessor muss implementiert sein, da er für den Definitionsteil deklariert ist
  • CS9253: Der Eigenschaftenaccessor implementiert keinen Accessor, der im Definitionsteil deklariert ist
  • CS9254: Der Eigenschaftenaccessor muss mit dem Definitionsteil übereinstimmen
  • CS9255: Beide partiellen Eigenschaftendeklarationen müssen denselben Typ aufweisen.
  • CS9257: Beide partiellen Eigenschaftendeklarationen müssen erforderlich sein, oder keine darf erforderlich sein

Ihre partielle Eigenschafts- oder Indexerdeklaration kann dazu führen, dass der Compiler die folgende Warnung ausgibt:

  • CS9256: Partielle Eigenschaftendeklarationen weisen Signaturunterschiede auf.

Diese Fehler und Warnungen treten auf, wenn Ihre partiellen Eigenschaften- oder Indexerdeklarationen gegen die Regeln für partielle Eigenschaften verstoßen.

  • Stellen Sie eine Implementierungsdeklaration für jede partielle Eigenschaft bereit, die die definierende Deklaration beschreibt, da partielle Eigenschaften beide Teile vollständig erfordern (CS9248).
  • Stellen Sie eine definierende Deklaration für jede partielle Implementierungsdeklaration für Eigenschaften bereit, da jede Implementierung über eine entsprechende Definition (CS9249) verfügen muss.
  • Entfernen Sie doppelte definierende Deklarationen und vermeiden Sie die Verwendung der Auto-Property-Syntax in der Implementierungsdeklaration, da jede teilweise Eigenschaft nur eine Definition aufweisen kann und die Implementierung explizite Accessoren enthalten muss (CS9250).
  • Entfernen Sie doppelte Implementierungsdeklarationen, da jede partielle Eigenschaft nur eine Implementierung (CS9251) aufweisen kann.
  • Implementieren Sie alle in der definierenden Deklaration deklarierten Accessoren, da die Implementierungsdeklaration für jeden Accessor (get, set oder init) in der Definition (CS9252) Implementierungen bereitstellen muss.
  • Entfernen Sie Accessoren aus der Implementierungsdeklaration, die nicht in der definierenden Deklaration deklariert wurden, da Sie nur Accessoren implementieren können, die im Definitionsteil deklariert wurden (CS9253).
  • Stellen Sie sicher, dass Accessorsignaturen zwischen beiden Deklarationen übereinstimmen, einschließlich des Accessortyps (abrufen, festlegen oder init) und allen Modifizierern, da inkonsistente Accessordefinitionen inkompatible Eigenschaftendeklarationen (CS9254) erstellen.
  • Stellen Sie sicher, dass beide Deklarationen denselben Eigenschaftstyp angeben, da unterschiedliche Typen inkompatible Eigenschaftensignaturen (CS9255) erstellen.
  • Stellen Sie sicher, dass beide Deklarationen den required Modifizierer konsistent einschließen oder weglassen, da das Mischen erforderlicher und nicht erforderlicher Deklarationen Mehrdeutigkeit darüber erzeugt, ob die Eigenschaft initialisiert werden muss (CS9257).
  • Überprüfen und korrigieren Sie alle Signaturkonflikten zwischen den deklarierenden und implementierenden Deklarationen, da Unterschiede bei Barrierefreiheitsmodifizierern, Rückgabetypen oder Parameterlisten (für Indexer) zu unerwartetem Verhalten (CS9256) führen können.

Partielle Ereignisse und Konstruktoren

  • CS9279: Partielles Ereignis kann keinen Initialisierer haben.
  • CS9280: Nur die Implementierungsdeklaration eines Teilkonstruktors kann einen Initialisierer aufweisen.

Sie haben einen Initialisierer für die definierende Deklaration eines partiellen Konstruktors oder für eine partielle Ereignisdeklaration deklariert. Entfernen Sie den Initialisierer.