Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die folgenden Compilerfehler behandelt:
- CS0022: Falsche Indexanzahl in []. 'Zahl' wurde erwartet
-
CS0178: Ungültiger Rangbezeichner: '
,' oder ']' erwartet - CS0248: Ein Array mit einer negativen Größe kann nicht erstellt werden.
-
CS0270: Die Arraygröße kann nicht in einer Variablendeklaration angegeben werden. (Versuchen Sie sie mit einem '
new'-Ausdruck zu initialisieren.) - CS0611: Arrayelemente können nicht vom folgenden Typ sein:
- CS0623: Arrayinitialisierer können nur in einer Variablen oder einem Feldinitialisierer verwendet werden. Verwenden Sie stattdessen den Ausdruck „new“.
- CS0650: Fehlerhafte Arraydeklaration: Beim Deklarieren eines verwalteten Arrays steht der Rangspezifizierer vor dem Variablenbezeichner. Zum Deklarieren eines Pufferfelds fester Größe verwenden Sie vor dem Feldtyp das Schlüsselwort „fixed“.
- CS0719: Arrayelemente dürfen keinen statischen Typ aufweisen.
- CS0747: Ungültige Deklaration des Initialisierermembers.
- CS0820: Arrayinitialisierer kann keiner implizit typisierten lokalen Variablen zugewiesen werden.
- CS0826: Es wurde kein optimaler Typ für das implizit typisierte Array gefunden.
- CS0846: Ein geschachtelter Arrayinitialisierer wird erwartet.
- CS1063: Die optimale überladene Add-Methode für das Auflistungsinitialisiererelement ist veraltet.
-
CS1552: Der Arraytypspezifizierer
[]muss vor dem Parameternamen stehen. - CS1586: Für die Arrayerstellung ist eine Arraygröße oder ein Arrayinitialisierer erforderlich.
- CS1920: Der Elementinitialisierer darf nicht leer sein.
-
CS1921: Die beste Übereinstimmung für die überladene Methode hat eine falsche Signatur für das Initialisierungselement. Die initialisierbare „
Add“-Methode muss eine zugängliche Instanzmethode sein. - CS1925: Ein Objekt vom Typ 'type' kann nicht mit einem Auflistungsinitialisierer initialisiert werden.
- CS1950: Die optimale überladene Add-Methode für den Auflistungsinitialisierer weist einige ungültige Argumente auf.
-
CS1954: Die beste Übereinstimmung für die überladene Methode für das Sammlungsinitialisierungselement kann nicht verwendet werden. „
Add“-Methoden des Sammlungsinitialisierers dürfen über keineref- oderout-Parameter verfügen. - CS9174: Der Typ kann nicht mit einem Sammlungsliteral initialisiert werden, da der Typ nicht konstruierbar ist.
- CS9176: Es gibt keinen Zieltyp für das Sammlungsliteral.
- CS9185: Der Generatortyp CollectionBuilderAttribute muss eine nicht generische Klasse oder Struktur sein.
- CS9186: Der Name der CollectionBuilderAttribute-Methode ist ungültig.
-
CS9187: Es konnte keine barrierefreie Methode mit der erwarteten Signatur gefunden werden: eine statische Methode mit einem einzelnen Parameter vom Typ
ReadOnlySpan<T>; und korrektem Rückgabetyp - CS9188: Typ verfügt über ein CollectionBuilderAttribute aber keinen Elementtyp.
- CS9203: Ein Auflistungsausdruck dieses Typs kann in diesem Kontext nicht verwendet werden, da er außerhalb des aktuellen Bereichs verfügbar gemacht werden kann.
- CS9210: Diese Version von System.Collections.Immutable.ImmutableArray<T> kann nicht mit Auflistungsausdrücken verwendet werden.
-
CS9212: Der Spread-Operator '
..' kann nicht für Variablen vom Typ 'type' verwendet werden, da 'type' keine öffentliche Instanz oder Erweiterungsdefinition für 'member' enthält. - CS9213: Das Sammlungsausdrucksziel "type" hat keinen Elementtyp.
- CS9214: Der Sammlungsausdruckstyp muss über einen anwendbaren Konstruktor verfügen, der ohne Argumente aufgerufen werden kann.
- CS9215: Der Sammlungsausdruckstyp "type" muss eine Instanz oder Erweiterungsmethode "Add" aufweisen, die mit einem einzelnen Argument aufgerufen werden kann.
- CS9222: Der Sammlungsinitialisierer führt zu einer unendlichen Kette von Instanziierungen der Sammlung "type".
- CS9332: Der Spread-Operator ".." kann im Filterausdruck einer Catch-Klausel nicht verwendet werden.
- CS9354: "with(...)" -Element muss das erste Element sein
- CS9355: 'with(...)'-Elemente werden für den Typ 'Type' nicht unterstützt.
- CS9356: 'with(...)' -Elementargumente können nicht dynamisch sein
- CS9357: "with(...)"-Element für eine schreibgeschützte Schnittstelle muss leer sein, falls vorhanden
- CS9358: Der Elementtyp dieser Auflistung kann weder eine Verweisstruktur noch ein Typparameter sein, der Verweisstrukturen zulässt.
- CS9359: Keine Überladung für die Methode "methode" akzeptiert "number" "with(...)" element arguments
Darüber hinaus werden in diesem Artikel die folgenden Warnungen behandelt:
- CS1062: Die optimale überladene Add-Methode für das Auflistungsinitialisiererelement ist veraltet.
- CS1064: Die optimale überladene Add-Methode für das Auflistungsinitialisiererelement ist veraltet.
- CS3007: Die überladene Methode 'method', die sich nur durch unbenannte Arraytypen unterscheidet, ist nicht CLS-kompatibel.
- CS3016: Arrays als Attributargumente sind nicht CLS-kompatibel.
- CS0251: Indizierung eines Arrays mit einem negativen Index (Arrayindizes starten immer mit Null).
- CS9208: Sammlungsausdruck kann unerwartete Heapzuordnungen verursachen. Erwägen Sie, explizit ein Array zu erstellen und dann in den endgültigen Typ zu konvertieren, um die Zuordnung explizit zu machen.
-
CS9209: Der Sammlungsausdruck kann aufgrund der Verwendung von '
..'-Spreads zu unerwarteten Heapzuweisungen führen. Erwägen Sie, explizit ein Array zu erstellen und dann in den endgültigen Typ zu konvertieren, um die Zuordnung explizit zu machen. - CS9332: Der Spread-Operator ".." kann im Filterausdruck einer Catch-Klausel nicht verwendet werden.
Ungültiger Zugriff auf Arrayelemente
- CS0022: Falsche Indexanzahl in []. 'number' wurde erwartet
- CS0251: Indizierung eines Arrays mit einem negativen Index (Arrayindizes starten immer mit Null).
Um ordnungsgemäß auf Arrayelemente zuzugreifen, befolgen Sie diese Indizierungsregeln. Weitere Informationen finden Sie unter Arrays.
- Geben Sie dieselbe Anzahl von Indizes wie deklarierte Dimensionen an (CS0022). Ein eindimensionales Array benötigt einen Index; Ein dreidimensionales Array benötigt drei Indizes.
- Verwenden Sie nur nicht negative ganze Zahlen für Arrayindizes (CS0251). Arrayindizes beginnen immer bei Null.
Ungültiger Sammlungsinitialisierer
- CS0747: Ungültige Deklaration des Initialisierermembers.
- CS1920: Der Elementinitialisierer darf nicht leer sein.
-
CS1921: Die beste Übereinstimmung für die überladene Methode hat eine falsche Signatur für das Initialisierungselement. Die initialisierbare „
Add“-Methode muss eine zugängliche Instanzmethode sein. - CS1922: Typ 'type' kann nicht mit einem Sammlungsinitialisierer initialisiert werden, da 'type' 'System.Collections.IEnumerable' nicht implementiert.
- CS1925: Ein Objekt vom Typ 'type' kann nicht mit einem Sammlungsinitialisierer initialisiert werden.
- CS1927: Warnung: Ignorieren von /win32manifest für Modul, da es nur für Assemblys gilt
- CS1950: Die optimale überladene Add-Methode für den Auflistungsinitialisierer weist einige ungültige Argumente auf.
-
CS1954: Die beste Übereinstimmung für die überladene Methode für das Sammlungsinitialisierungselement kann nicht verwendet werden. „
Add“-Methoden des Sammlungsinitialisierers dürfen über keineref- oderout-Parameter verfügen. - CS9174: Der Typ kann nicht mit einem Sammlungsliteral initialisiert werden, da der Typ nicht konstruierbar ist.
- CS9176: Es gibt keinen Zieltyp für das Sammlungsliteral.
- CS9203: Ein Auflistungsausdruck dieses Typs kann in diesem Kontext nicht verwendet werden, da er außerhalb des aktuellen Bereichs verfügbar gemacht werden kann.
- CS9210: Diese Version von System.Collections.Immutable.ImmutableArray<T> kann nicht mit Auflistungsausdrücken verwendet werden.
-
CS9212: Der Spread-Operator '
..' kann nicht für Variablen vom Typ 'typ' verwendet werden, da 'type' keine öffentliche Instanz oder Erweiterungsdefinition für 'member' enthält. - CS9213: Das Sammlungsausdrucksziel "type" hat keinen Elementtyp.
- CS9214: Der Sammlungsausdruckstyp muss über einen anwendbaren Konstruktor verfügen, der ohne Argumente aufgerufen werden kann.
- CS9215: Der Sammlungsausdruckstyp "type" muss eine Instanz oder Erweiterungsmethode "Add" aufweisen, die mit einem einzelnen Argument aufgerufen werden kann.
- CS9222: Der Sammlungsinitialisierer führt zu einer unendlichen Kette von Instanziierungen der Sammlung "type".
- CS9332: Der Spread-Operator ".." kann im Filterausdruck einer Catch-Klausel nicht verwendet werden.
- CS9354: "with(...)" -Element muss das erste Element sein
- CS9355: 'with(...)'-Elemente werden für den Typ 'Type' nicht unterstützt.
- CS9356: 'with(...)' -Elementargumente können nicht dynamisch sein
- CS9357: "with(...)"-Element für eine schreibgeschützte Schnittstelle muss leer sein, falls vorhanden
- CS9358: Elementtyp dieser Auflistung darf keine Verweisstruktur oder ein Typparameter sein, der Verweisstrukturen erlaubt.
- CS9359: Es gibt keine Überladung für die Methode "Methode", die "number" 'with(...)' Element-Argumente akzeptiert
Der Compiler generiert möglicherweise auch die folgenden Warnungen:
- CS1062: Die optimale überladene Add-Methode für das Auflistungsinitialisiererelement ist veraltet.
- CS1063: Die optimale überladene Add-Methode für das Auflistungsinitialisiererelement ist veraltet.
- CS1064: Die optimale überladene Add-Methode für das Auflistungsinitialisiererelement ist veraltet.
- CS9208: Sammlungsausdruck kann unerwartete Heapzuordnungen verursachen. Erwägen Sie, explizit ein Array zu erstellen und dann in den endgültigen Typ zu konvertieren, um die Zuordnung explizit zu machen.
-
CS9209: Der Sammlungsausdruck kann aufgrund der Verwendung von '
..'-Spreads zu unerwarteten Heapzuweisungen führen. Erwägen Sie, explizit ein Array zu erstellen und dann in den endgültigen Typ zu konvertieren, um die Zuordnung explizit zu machen.
Um gültige Sammlungsinitialisierer zu erstellen, befolgen Sie diese Regeln. Weitere Informationen finden Sie unter Sammlungsausdrücke.
- Kombinieren Sie die Eigenschaftsinitialisierung nicht mit dem Hinzufügen von Elementen im selben Initialisierungsprogramm (CS0747).
- Schließen Sie mindestens ein Element in Sammlungsinitialisierer mit geschweiften Klammern (CS1920) ein.
- Stellen Sie sicher, dass der Sammlungstyp
IEnumerableimplementiert wird (CS1922). - Verwenden Sie Sammlungsinitialisierer nur für Sammlungstypen (CS1925).
- Überprüfen Sie, ob auf die
Add-Methode zugegriffen werden kann, ob sie einen Parameter akzeptiert, der dem Elementtyp entspricht, und keineref- oderout-Modifizierer verwendet (CS1921, CS1954). - Auflösen von mehrdeutigen
AddMethodenüberladungen (CS1950). - Geben Sie einen expliziten Zieltyp für Sammlungsausdrücke an, wenn der Compiler ihn nicht ableiten kann (CS9176, CS9213).
- Stellen Sie sicher, dass der Sammlungstyp mit einem parameterlosen Konstruktor (CS9174, CS9214) konstruierbar ist.
- Verwenden Sie in Sammlungsausdrücken keine Typen, die die Refsicherheit verletzen können (
ref struct). - Aktualisieren auf eine kompatible Laufzeitversion für
ImmutableArraySammlungsausdrücke (CS9210). - Implementieren von Enumerationsmustern (wie
GetEnumerator) für Spreadoperator-Unterstützung (CS9212). - Vermeiden Sie Zirkelabhängigkeiten in der Sammlungsinitialisierung (CS9222).
- Verwenden Sie den Spread-Operator nicht in Catch-Klausel-Filterausdrücken (CS9332).
- Platzieren Sie das
with(...)Element zuerst in Auflistungsausdrücken (CS9354). - Verwenden Sie
with(...)Elemente nur für Typen, die Auflistungsausdrucksargumente (CS9355) unterstützen. - Verwenden Sie keine dynamischen Argumente in
with(...)Elementen (CS9356). - Verwenden Sie ein leeres
with()für schreibgeschützte Schnittstellentypen (CS9357). - Verwenden Sie Verweisstrukturtypen nicht als Elementtypen in Auflistungen, die sie nicht unterstützen (CS9358).
- Stimmen Sie die Anzahl der
with(...)Argumente mit verfügbaren Konstruktorüberladungen (CS9359) überein.
Ungültiger Arrayrang
-
CS0178: Ungültiger Rangbezeichner: Erwartet wird '
,' oder ']' - CS0650: Fehlerhafte Arraydeklaration: Beim Deklarieren eines verwalteten Arrays steht der Rangspezifizierer vor dem Variablenbezeichner. Zum Deklarieren eines Pufferfelds fester Größe verwenden Sie vor dem Feldtyp das Schlüsselwort „fixed“.
-
CS1552: Der Arraytypspezifizierer
[]muss vor dem Parameternamen stehen.
Um Arrays richtig zu deklarieren, befolgen Sie die richtige Syntaxreihenfolge. Weitere Informationen finden Sie im Abschnitt " Arrays " und im Abschnitt "C#-Sprachspezifikation " für Arrayinitialisierer.
Eine Arraydeklaration besteht aus diesen Token in der reihenfolge:
- Der Typ von Array-Elementen (z. B.
int,string, oderSomeClassType). - Die Klammern des Arrays, optional einschließlich Kommas für mehrere Dimensionen.
- Der Variablenname.
Wenn Sie Arrayabmessungen angeben, können Sie Folgendes verwenden:
- Anzahl von Elementen in Klammern (
{und}) - Leere Klammern
- Mindestens ein in Klammern eingeschlossenes Komma
Die folgenden Beispiele zeigen gültige Arraydeklarationen:
int[] anArrayOfIntegers;
string[,,] threeDimensionalStringArray;
Ungültige Arraylänge
- CS0248: Ein Array mit einer negativen Größe kann nicht erstellt werden.
- CS0270: Arraygröße kann nicht in einer Variablendeklaration angegeben werden (versuchen Sie, mit einem "neuen" Ausdruck zu initialisieren)
- CS1586: Für die Arrayerstellung ist eine Arraygröße oder ein Arrayinitialisierer erforderlich.
Wenn Sie Arrays mit gültigen Längen erstellen möchten, geben Sie die Größe während der Initialisierung an, nicht Deklaration. Weitere Informationen finden Sie unter Arrays.
- Geben Sie die Arraylänge als Teil der Initialisierung an, nicht als Deklaration (CS0270).
- Verwenden Sie nur positive ganze Zahlen für Arrayabmessungen (CS0248).
- Geben Sie entweder eine Größe in einem
newAusdruck oder einen Arrayinitialisierer (CS1586) an.
Das folgende Beispiel zeigt beide Mechanismen:
int[] fiveIntegers = new int[5];
string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
Ungültiger Elementtyp
- CS0611: Arrayelemente können nicht vom Typ 'type' sein.
- CS0719: Arrayelemente dürfen keinen statischen Typ aufweisen.
- CS0820: Arrayinitialisierer kann keiner implizit typisierten lokalen Variablen zugewiesen werden
- CS0826: Kein optimaler Typ für implizit typierte Arrays gefunden
Wenn Sie Arrays mit korrekten Elementtypen verwenden möchten, befolgen Sie diese Typeinschränkungen. Weitere Informationen finden Sie unter implizit typierten lokalen Variablen und am häufigsten verwendeten Typ.
- Verwenden Sie keine eingeschränkten Typen wie System.TypedReference und System.ArgIterator als Arrayelementtypen (CS0611).
- Verwenden
staticSie Klassen nicht als Arrayelementtypen, da Instanzen nicht erstellt werden können (CS0719). - Initialisieren implizit typisierter Arrays mit einem
newAusdruck (CS0820). - Stellen Sie sicher, dass alle Elemente in einem implizit typisierten Arrayinitialisierer einen am häufigsten verwendeten Typ (CS0826) aufweisen.
Die folgenden Beispiele zeigen, wie implizit typierte Arrays deklariert werden:
var implicitType = new[] { 1, 2, 3 };
char c = 'c';
short s1 = 0;
short s2 = -0;
short s3 = 1;
short s4 = -1;
// common type is "int"
var commonType = new[] { s1, s2, s3, s4, c, 1 };
Um einen am häufigsten verwendeten Typ zu gewährleisten, verwenden Sie eine der folgenden Techniken:
- Weisen Sie dem Array einen expliziten Typ zu.
- Weisen Sie allen Arrayelementen denselben Typ zu.
- Stellen Sie explizite Umwandlungen für Elemente bereit, die das Problem verursachen könnten.
Ungültiger Arrayinitialisierer
- CS0623: Arrayinitialisierer können nur in einer Variablen oder einem Feldinitialisierer verwendet werden. Verwenden Sie stattdessen den Ausdruck „new“.
- CS0846: Ein geschachtelter Arrayinitialisierer wird erwartet.
- CS1925: Ein Objekt vom Typ 'type' kann nicht mit einem Sammlungsinitialisierer initialisiert werden.
Diese Fehler deuten auf eine ungültige Arrayinitialisierungssyntax hin. Weitere Informationen finden Sie unter Arrays.
So erstellen Sie gültige Arrayinitialisierer:
- Verwenden Sie Arrayinitialisierer nur in Variablen- oder Felddeklarationen (CS0623). Verwenden Sie einen
newAusdruck in anderen Kontexten. - Geschweifte Klammern (
{und}) um Elemente oder untergeordnete Arrays herum setzen (CS0846). - Stellen Sie sicher, dass der Initialisierungsausdruck der Anzahl von Arrays in einer Initialisierung eines gezackten Arrays entspricht.
- Verwenden Sie Sammlungsinitialisierer nur für Sammlungstypen, nicht für Arrays oder andere Typen (CS1925).
Ungültiger Sammlungsgenerator
- CS9175: Ein Ausdrucksbaum darf keinen Sammlungsausdruck enthalten.
- CS9177: Der Rückgabetyp der Generatormethode "CollectionBuilderAttribute" muss mit dem sammlungstyp übereinstimmen, der in "betterness" verwendet wird.
- CS9178: Es gibt keinen Zieltyp für den natürlichen Typ "Typ".
- CS9179: Der Sammlungsausdruckstyp muss über einen anwendbaren Konstruktor verfügen, der ohne Argumente aufgerufen werden kann.
- CS9180: Die Generatormethode "CollectionBuilderAttribute" muss eine statische Methode sein.
- CS9181: Der Generatormethodentyp 'CollectionBuilderAttribute' muss mit dem Parameter 'ReadOnlySpan<{0}>' übereinstimmen.
- CS9182: Ungültiges 'CollectionBuilderAttribute'. Für den Generatortyp '{0}' wurde keine übereinstimmende '{1}' Methode gefunden.
- CS9183: Der Rückgabetyp der 'CollectionBuilderAttribute'-Methode muss ein nicht abstrakter, nicht schnittstellenfremder Typ sein, der als "Typ" verwendet werden kann.
- CS9185: Ein statischer Typ kann nicht als Typargument verwendet werden.
-
CS9186: Der Methodenname
CollectionBuilderAttributeist ungültig. - CS9187: Es konnte keine barrierefreie 'Create'-Methode mit der erwarteten Signatur gefunden werden: eine statische Methode mit einem einzelnen Parameter vom Typ 'ReadOnlySpan<{0}>' und Rückgabetyp '{1}'.
- CS9188: "scoped" kann nicht als Modifizierer für einen Sammlungsausdruckstypparameter verwendet werden.
- CS9190: Die 'CollectionBuilderAttribute'-Methode 'builderMethod' kann nicht angewendet werden, da sie generisch ist.
- CS9192: Inlinearraykonvertierungen können nicht mit Auflistungsausdrücken verwendet werden.
- CS9193: Das Argument "Argument" wird möglicherweise nicht mit dem Schlüsselwort "ref" übergeben.
- CS9194: Das Argument 'Argument' kann nicht mit dem Schlüsselwort 'out' übergeben werden.
- CS9195: Argument 'argument' darf nicht mit dem Schlüsselwort "in" übergeben werden.
- CS9196: Feature "Sammlungsausdruck" ist in C# "Version" nicht verfügbar. Verwenden Sie die Sprachversion 'requiredVersion' oder höher.
- CS9197: Das Feature "Inlinearrays" ist in C# "Version" nicht verfügbar. Verwenden Sie die Sprachversion 'requiredVersion' oder höher.
- CS9198: Das Feature „Ref- und Unsicherheitsmerkmale in asynchronen und Iterator-Methoden“ ist in C#-Version 'version' nicht verfügbar. Bitte verwenden Sie die Sprachversion 'requiredVersion' oder höher.
- CS9199: Die Funktion 'Sammlungsausdruck' ist in C# 'Version' nicht verfügbar. Bitte verwenden Sie die Sprachversion 'requiredVersion' oder höher.
- CS9202: Das Feature "ref readonly parameters" ist in C# "version" nicht verfügbar. Verwenden Sie die Sprachversion 'requiredVersion' oder höher.
- CS9208: Der Operator "nameof" kann nicht für einen Inlinearrayzugriff verwendet werden.
- CS9209: Eine zurückzugebende Eigenschaft "Property" kann nicht als Wertargument verwendet werden.
- CS9211: Der Ausdruck muss vom Typ "type" sein, da er durch Verweis zugewiesen wird.
- CS9212: Der Sammlungsausdruck kann nicht als Wert in einer festen Anweisung verwendet werden.
- CS9217: Lokal "ref" kann nicht über die Grenze "await" oder "yield" beibehalten werden.
- CS9218: "paramName" ist eine Referenzstruktur und kann nicht der Typ eines Parameters sein.
- CS9221: Der Typ 'type' darf weder eine Ref-Struktur sein noch ein Typparameter, der Ref-Strukturen zulässt, damit er als Parameter 'parameter' im generischen Typ oder der Methode 'member' verwendet werden kann.
- CS9223: Eine Struktur, die "ref"-Felder enthält, kann nicht in einem Auflistungsausdruck verwendet werden.
- CS9228: Nicht variable Deklaration einer Referenzstruktur ist nicht zulässig
- CS9232: Partielle Methodendeklarationen weisen Signaturunterschiede auf.
- CS9233: Der Modifizierer "Datei" kann nur für Typen verwendet werden, die in einer Kompilierungseinheit auf oberster Ebene definiert sind.
Um Sammlungsausdrücke mit Auflistungs-Generator-Attributen ordnungsgemäß zu erstellen, befolgen Sie diese Anforderungen. Weitere Informationen finden Sie unter Sammlungsausdrücke.
- Stellen Sie sicher, dass der Zieltyp über einen Iterationstyp verfügt, der
foreachunterstützt wird (CS9188). - Verwenden Sie keine generischen Typen als Sammlungs-Generator-Typen (CS9185).
- Überprüfen Sie, ob der angegebene
CollectionBuilderAttributeMethodenname gültig ist (CS9186). - Wenden Sie nur
CollectionBuilderAttributestatische Methoden an, die der erforderlichen Signatur entsprechen: Geben Sie den Sammlungstyp zurück und nehmen Sie einenReadOnlySpan<T>Parameter an, derTdem Elementtyp entspricht (CS9180, CS9181, CS9182, CS9183, CS9187, CS9190). - Stellen Sie sicher, dass der Rückgabetyp übereinstimmt und nicht abstrakt oder eine Schnittstelle (CS9177, CS9183) ist.
- Verwenden Sie keine Verweisstruktur oder Typen mit Bezugsfeldern in Auflistungsausdrücken (CS9218, CS9221, CS9223, CS9228).
- Vermeiden Sie die Verwendung von Sammlungs-Ausdrücken in Ausdrucksbäumen (CS9175).
- Verwenden Sie die richtige Sprachversion für Auflistungsausdrücke und zugehörige Features (CS9196, CS9197, CS9198, CS9199, CS9202).
CLS-Warnungen (Common Language Specification)
- CS3007: Die überladene Methode 'method', die sich nur durch unbenannte Arraytypen unterscheidet, ist nicht CLS-kompatibel.
- CS3016: Arrays als Attributargumente sind nicht CLS-kompatibel.
Befolgen Sie die folgenden Richtlinien, um CLS-kompatiblen Code mit Arrays zu schreiben. Weitere Informationen finden Sie unter Sprachunabhängigkeit.
- Erstellen Sie keine überladenen Methoden, die sich nur in Arrayelementtypen (CS3007) unterscheiden.
- Verwenden Sie Arrays nicht als Attributargumente (CS3016).
Fehler CS3007 tritt auf, wenn eine überladene Methode mit einem Jagged Array vorhanden ist und die Methodensignaturen sich lediglich durch den Elementtyp des Arrays unterscheiden. Um diesen Fehler zu vermeiden, sollten Sie ein rechteckiges Array anstelle eines Jagged Array verwenden oder das Attribut CLSCompliantAttribute entfernen, sofern keine CLS-Kompatibilität erforderlich ist. Weitere Informationen zu den CLS-Konformitätsregeln finden Sie unter Sprachunabhängigkeit und sprachunabhängige Komponenten.
Fehler CS3016 gibt an, dass es nicht mit der Common Language Specification (CLS) kompatibel ist, um ein Array an ein Attribut zu übergeben. Weitere Informationen zu den CLS-Konformitätsregeln finden Sie unter Sprachunabhängigkeit und sprachunabhängige Komponenten.