Fehler und Warnungen im Zusammenhang mit partial
Typ- und partial
Memberdeklarationen
Es gibt zahlreiche Fehler im Zusammenhang mit partial
Typ- und partial
Memberdeklarationen:
- 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
oderpartial
markiert ist - CS0750: Partielle Member dürfen nicht den Modifizierer „
abstract
“ aufweisen. - CS0751: Partielle Member müssen in einem partiellen
class
oder einem partiellenstruct
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 darfstatic
sein. - CS0764: Beide partiellen Methodendeklarationen müssen
unsafe
sein, oder keine von beiden darfunsafe
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
undnew
-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
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 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. - CS8863: Nur eine einzelne partielle Typ-Deklaration darf eine Parameterliste aufweisen
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 der partiellen
class
oderstruct
„Typ“. Um eine Sortierung anzugeben, müssen sich alle Instanzenfelder in derselben Deklaration befinden.
Für jeden partiellen Typ muss das partial
-Schlüsselwort unmittelbar vor class
, record
, struct
oder interface
stehen. Der Compiler gibt einen Fehler aus, wenn dies in einer anderen Reihenfolge angezeigt wird. Außerdem:
- Alle Deklarationen eines partiellen Typs müssen in Bezug auf den Typ übereinstimmen (
class
,struct
,record class
,record struct
,readonly struct
oderreadonly record struct
). - Alle Deklarationen müssen den
partial
-Modifizierer beinhalten. - Die Deklarationen für einen generischen partiellen Typ müssen dieselben Typ-Parameter in derselben Reihenfolge enthalten.
Einige Teile der Deklaration müssen nicht für alle Deklarationen für einen Typ wiederholt werden. Wenn diese Elemente jedoch auf mehreren partial
-Deklarationen wiederholt werden, müssen sie übereinstimmen:
- Alle Zugriffsmodifizierer, wie etwa
public
. - Alle Basisklassen- oder implementierten Schnittstellen.
- Alle Einschränkungen für Typ-Parameter.
Ein primärer Konstruktor kann für höchstens eine Deklaration für einen partiellen Typ deklariert werden.
Der Compiler gibt eine Warnung aus, wenn mehrere Felder in mehreren Dateien für einen partial struct
-Typ deklariert werden. Wenn die Layout-Reihenfolge wichtig ist, müssen Sie alle Felder in derselben Datei deklarieren. Wenn die Reihenfolge keine Rolle spielt, können Sie die System.Runtime.InteropServices.StructLayoutAttribute mit dem LayoutKind.Auto-Wert verwenden.
Partielle Member
- CS0750: Partielle Member dürfen nicht den Modifizierer „
abstract
“ aufweisen. - CS0751: Partielle Member müssen in einem partiellen
class
oder einem partiellenstruct
deklariert werden - CS0754: Ein partieller Member darf keine Schnittstellenmethoden explizit implementieren.
- CS0763: Beide partiellen Methodendeklarationen müssen
static
sein, oder keine von beiden darfstatic
sein. - CS0764: Beide partiellen Methodendeklarationen müssen
unsafe
sein, oder keine von beiden darfunsafe
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
- undnew
-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.
Partielle Member verfügen über zwei Deklarationen. Die Deklaration ohne Implementierung ist die deklarierende Deklaration. Die Deklaration mit der Implementierung ist die implementierende Deklaration. Partielle Member sind nur in einem partial
-Typ zulässig. Partielle Member können nicht abstract
sein. Partielle Member können keine Schnittstelle explizit implementieren. Beide Deklarationen eines partiellen Members müssen identische Signaturen aufweisen. Beispielsweise können beide oder keine Deklarationen die Modifizierer static
oder unsafe
enthalten.
Partielle Methoden
- CS0501: „member function“ muss einen Text deklarieren, da sie nicht als
abstract
,extern
oderpartial
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.
Für bestimmte partial
-Methodendeklarationen ist keine Implementierungsdeklaration erforderlich. Das heißt: Wenn das Mitglied void
zurückgibt, werden keine Zugriffsmodifizierer deklariert (einschließlich des standardmäßigen private
-Modifizierers), und es wird keiner der Modifizierer virtual
, override
, sealed
oder new
eingeschlossen. Andernfalls muss jede partielle Methode sowohl die deklarierende als auch die implementierende Deklaration enthalten.
Wenn eine partielle Methode eine implementierende Deklaration enthält, müssen beide Deklarationen identisch sein. Es kann genau eine implementierende Deklaration definiert werden.
Partielle Eigenschaften
Die folgenden Fehler deuten auf Fehler in Ihren partiellen Eigenschafts- oder Indexerdeklarationen hin:
- 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
Die folgende Warnung weist auf einen Signaturunterschied bei der Deklarierung und Implementierung von Deklarationen in einer partiellen Eigenschaft hin:
- CS9256: Partielle Eigenschaftendeklarationen weisen Signaturunterschiede auf.
Eine partielle Eigenschaft oder ein Indexer muss sowohl über eine deklarierende Deklaration als auch über eine implementierende Deklaration verfügen. Die Signaturen für beide Deklarationen müssen übereinstimmen. Da die deklarierende Deklaration dieselbe Syntax wie eine automatisch implementierte Eigenschaft verwendet, kann die Implementierungsdeklaration keine automatisch implementierte Eigenschaft sein. Die Accessoren müssen über Text verfügen.