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:
- CS0765 - In Ausdrucksbäumen können weder Partialmethoden mit nur einer definierenden Deklaration noch entfernte bedingte Methoden verwendet werden.
- CS0831 - Eine Ausdrucksbaumstruktur darf keinen Basiszugriff enthalten.
- CS0832 - Eine Ausdrucksbaumstruktur darf keinen Zuweisungsoperator enthalten.
- CS0834 - Ein Lambdaausdruck mit einem Anweisungstext kann nicht in eine Ausdrucksbaumstruktur konvertiert werden.
- CS0835 - Lambda kann nicht in einen Ausdrucksbaum konvertiert werden, dessen Typargument „type“ kein Delegattyp ist.
- CS0838 - Ein Ausdrucksbaum darf keinen Initialisierer für mehrdimensionale Arrays enthalten.
- CS0845 - Ein Ausdrucksbaumstruktur-Lambda darf keinen Sammeloperator mit einem NULL- oder Standardliteral auf der linken Seite enthalten.
- CS0853 - Eine Ausdrucksbaumstruktur darf keine benannte Argumentspezifikation enthalten.
- CS0854 - Ein Ausdrucksbaum darf keinen Aufruf enthalten, der optionale Argumente verwendet.
- CS0855 - Ausdrucksbaumstrukturen dürfen keine indizierten Eigenschaften enthalten.
- CS1944 - Ein Ausdrucksbaum darf keine unsichere Zeigeroperation enthalten.
- CS1945 - Ein Ausdrucksbaum darf keinen anonymen Methodenausdruck enthalten.
- CS1946 - Ein anonymer Methodenausdruck kann nicht in einen Ausdrucksbaum konvertiert werden.
-
CS1951 - Ein Ausdrucksbaum-Lambda darf keinen
ref-,in- oderout-Parameter enthalten. - CS1952 - Das Lambda einer Ausdrucksstruktur darf keine Methode mit Variablenargumenten enthalten.
- CS1963 - Eine Ausdrucksbaumstruktur darf keinen dynamischen Vorgang enthalten.
- CS1989 - Asynchrone Lambdaausdrücke können nicht in Ausdrucksstrukturen konvertiert werden.
- CS2037 - Ein Lambda einer Ausdrucksstruktur darf keinen COM-Aufruf enthalten, in dem „ref“ für Argumente ausgelassen wurde.
- CS7053 - Ein Ausdrucksbaum darf kein „Feature“ enthalten.
- CS8072 - Ein Lambda einer Ausdrucksstruktur darf keinen Operator enthalten, der null weitergibt.
- CS8074 - Ein Lambda einer Ausdrucksstruktur darf keinen Wörterbuchinitialisierer enthalten.
-
CS8075 - Eine Erweiterungsmethode
Addwird für einen Auflistungsinitialisierer in einem Ausdrucks-Lambda nicht unterstützt. - CS8110 - Ein Ausdrucksbaum darf keinen Verweis auf eine lokale Funktion enthalten.
-
CS8122 - Eine Ausdrucksbaumstruktur darf keinen „
is“-Mustervergleichsoperator enthalten. - CS8143 - Eine Ausdrucksbaumstruktur darf kein Tupelliteral enthalten.
- CS8144 - Eine Ausdrucksbaumstruktur darf keine Tupelkonvertierung enthalten.
- CS8153 - Ein Lambda einer Ausdrucksstruktur darf keinen Aufruf einer Methode, einer Eigenschaft oder eines Indexers enthalten, deren bzw. dessen Rückgabe durch Verweis erfolgt.
- CS8155 - Lambdaausdrücke, deren Rückgabe als Verweis erfolgt, können nicht in Ausdruckbäume konvertiert werden.
- CS8188 - Ein Ausdrucksbaum darf keinen throw-Ausdruck enthalten.
- CS8198 - Ein Ausdrucksbaum darf keine Variablen-Deklaration mit einem out-Argument enthalten.
- CS8207 - Eine Ausdrucksbaumstruktur darf keine Ausschussvariable enthalten.
CS8382 Ein Ausdrucksbaum darf keinen -Tupel- oder -Operator enthalten. - CS8514 - Ein Ausdrucksbaum darf keinen Switch-Ausdruck enthalten.
- CS8640 - Eine Ausdrucksbaumstruktur darf keinen Wert vom „ref struct“- oder eingeschränkten Typ enthalten.
- CS8642 - Eine Ausdrucksbaumstruktur darf keine NULL-Sammelzuweisung enthalten.
- CS8790 - Ein Ausdrucksbaum darf weder ein Muster System.Index noch einen Indexerzugriff System.Range enthalten.
-
CS8791 - Eine Ausdrucksbaumstruktur darf keinen vom Ende ausgehenden Indexausdruck („
^“) enthalten. -
CS8792 - Ein Ausdrucksbaum darf keinen Bereichsausdruck („
..“) enthalten. -
CS8810 - „
&“ für Methodengruppen darf in Ausdrucksbäumen nicht verwendet werden. -
CS8849 - Eine Ausdrucksbaumstruktur darf keinen
with-Ausdruck enthalten. - CS8927 - Ein Ausdrucksbaum darf keinen Zugriff auf ein statisches, virtuelles oder abstraktes Schnittstellenmitglied enthalten.
- CS8952 - Eine Ausdrucksbaumstruktur darf keine Handlerkonvertierung einer interpolierten Zeichenfolge enthalten.
- CS8972 - Ein Lambdaausdruck mit Attributen kann nicht in eine Ausdrucksstruktur konvertiert werden.
- CS9170 - Eine Ausdrucksbaumstruktur darf keinen Inlinearrayzugriff und keine Inlinearraykonvertierung enthalten.
- CS9175 - Ein Ausdrucksbaum darf keinen Sammlungsausdruck enthalten.
- CS9226 - Ein Ausdrucksbaum darf keine erweiterte Form eines params-Parameters für Sammlungen, die nicht in Array-Form vorliegen, enthalten.
- CS9296 - Eine Ausdrucksstruktur darf keine Erweiterungseigenschaft oder einen Indexerzugriff enthalten.
- CS9307 - Ein Ausdrucksbaum darf keine benannte Argumentspezifikation enthalten, die nicht an der richtigen Stelle ist.
- CS9369 - Eine Ausdrucksbaumstruktur darf keine Unionskonvertierung enthalten.
Einschränkungen von Ausdrucksbäumen
Alle Fehler in der vorherigen Liste geben an, dass Sie einen C#-Ausdruckstyp verwendet haben, der in einer Ausdrucksstruktur nicht zulässig ist. In den meisten Fällen stellen die unerlaubten Ausdrücke die Syntax dar, die nach C# 3.0 eingeführt wurde. Diese Ausdrücke sind unzulässig, da sie einen Breaking Change in allen Bibliotheken erstellen würden, die Ausdrucksbaumstrukturen parsen. Alle Bibliotheken müssten erweitert werden, um neue C#-Ausdrücke zu parsen, wenn neuere Konstrukte erlaubt wären.
Die folgenden Ausdrücke sind unzulässig:
- Aufrufe von partiellen Methoden, die keine Implementierungsdeklaration besitzen,
- Aufrufe von bedingten Methoden, die entfernt wurden.
- Aufrufe von lokalen Funktionen
-
asyncLambda-Ausdrücke. - Verwenden von
base, um eine in einer Basisklasse deklarierte virtuelle Methode direkt aufzurufen. - Zuweisungsvorgänge
- Anweisungs-Lambdas.
- Initialisierer mehrdimensionaler Arrays Erstellen und initialisieren Sie stattdessen ein mehrdimensionales Array außerhalb der Ausdrucksstruktur.
-
dynamicOperationen. - Ausdrücke für den Musterabgleich.
- Tupelliterale und viele Tupelvorgänge, z. B. Gleichheitsvergleiche.
-
throwAusdrücke. -
(
_)-Deklarationen verwerfen. - Die Index- und Bereichsoperatoren .
- Nicht destruktive Mutation mit
withAusdrücken. - Deklarieren oder Zugreifen auf Inline-Arrays.
- Einschließlich Sammlungsausdrücken.
- Union-Konvertierungen.
- Die NULL-Weitergabe- und NULL-Sammeloperatoren.
-
ref structTypen, wie z. B. System.Span<T> und System.ReadOnlySpan<T>. -
in,outundrefParameter, einschließlichoutVariablendeklarationen. -
refreturns. - Aufrufe von Methoden, die
refzurückgeben. - Zugreifen auf statische abstrakte Schnittstellenmember.
- Inline-Arrays.
- Der Modifizierer
paramsbei allem anderen als eindimensionalen Arrays.
Weitere Einschränkungen:
- Auf Erweiterungseigenschaften und Indexer als Erweiterungen kann nicht zugegriffen werden.
- Attribute lassen sich nicht auf den Lambda-Ausdruck, seine Parameter oder den Rückgabewert anwenden.
- Der Lambdaausdruck muss in einen von System.Linq.Expressions.Expression abgeleiteten Typ konvertierbar sein, dessen Typparameter ein Delegattyp ist.
- Eingeschränkte benannte und optionale Parameter. Der Ausdruck darf keine Methode aufrufen, die benannte Argumente angibt, und er darf nicht den Standardwert eines optionalen Parameters verwenden.
-
Wörterbuchinitialisierer oder Erweiterungsmethoden
Addkönnen nicht verwendet werden. - Der Zielausdruck muss ein Lambdaausdruck sein. Konstanten und Variablen sind unzulässig, aber ein Lambdaausdruck, der eine Konstante oder Variable zurückgibt, ist zulässig.
- Unsichere Zeigervorgänge sind nicht zulässig.
- COM-Aufrufe müssen
reffür Argumente enthalten. Dies kann nicht impliziert sein. - Das nicht unterstützte
__arglistSchlüsselwort.