Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver följande kompilatorfel:
- CS0765 - Partiella metoder med endast en definierande deklaration eller borttagna villkorsmetoder kan inte användas i uttrycksträd.
- CS0831 - Ett uttrycksträd kanske inte innehåller någon basåtkomst.
- CS0832 - Ett uttrycksträd får inte innehålla någon tilldelningsoperator
- CS0834 - Ett lambda-uttryck med en uttryckstext kan inte konverteras till ett uttrycksträd.
- CS0835 - Det går inte att konvertera lambda till ett uttrycksträd vars typargument "type" inte är en ombudstyp.
- CS0838 - Ett uttrycksträd får inte innehålla en flerdimensionell matrisinitierare.
- CS0845 - Ett uttrycksträd lambda får inte innehålla en sammanslagningsoperator med ett null- eller standardvärde på vänster sida.
- CS0853 - Ett uttrycksträd får inte innehålla en namngiven argumentspecifikation.
- CS0854 - Ett uttrycksträd får inte innehålla ett anrop som använder valfria argument.
- CS0855 - Ett uttrycksträd får inte innehålla en indexerad egenskap.
- CS1944 - Ett uttrycksträd kanske inte innehåller en osäker pekaråtgärd.
- CS1945 - Ett uttrycksträd får inte innehålla ett anonymt metoduttryck.
- CS1946 - Ett anonymt metoduttryck kan inte konverteras till ett uttrycksträd.
-
CS1951 - Ett uttrycksträd lambda får inte innehålla en
ref,inelleroutparameter. - CS1952 - Ett uttrycksträd lambda får inte innehålla en metod med variabelargument.
- CS1963 - Ett uttrycksträd kanske inte innehåller en dynamisk åtgärd.
- CS1989 - Async lambda-uttryck kan inte konverteras till uttrycksträd.
- CS2037 - Ett uttrycksträd lambda får inte innehålla ett COM-anrop med ref utelämnat på argument.
- CS7053 - Ett uttrycksträd får inte innehålla "funktion".
- CS8072 - Ett uttrycksträd lambda får inte innehålla en null-spridningsoperator.
- CS8074 - Ett uttrycksträd lambda får inte innehålla en ordlisteinitierare.
-
CS8075 - En tilläggsmetod
Addstöds inte för en insamlingsinitierare i ett uttryck lambda. - CS8110 - Ett uttrycksträd får inte innehålla en referens till en lokal funktion.
-
CS8122 - Ett uttrycksträd får inte innehålla en mönstermatchningsoperator
is. - CS8143 - Ett uttrycksträd får inte innehålla en tupl-literal.
- CS8144 - Ett uttrycksträd får inte innehålla en omvandling av tuple.
- CS8153 - Ett uttrycksträd lambda får inte innehålla ett anrop till en metod, egenskap eller indexerare som returneras med referens.
- CS8155 - Lambda-uttryck som returneras med referens kan inte konverteras till uttrycksträd.
- CS8188 - Ett uttrycksträd får inte innehålla ett utkastsuttryck.
- CS8198 - Ett uttrycksträd får inte innehålla en utgående argumentvariabeldeklaration.
- CS8207 - Ett uttrycksträd får inte innehålla någon platshållare.
-
CS8382 - Ett uttrycksträd får inte innehålla en tuppel
==eller!=operator. - CS8514 - Ett uttrycksträd får inte innehålla ett switch-uttryck.
- CS8640 - Uttrycksträd kan inte innehålla värde av ref struct eller av begränsad typ.
- CS8642 - Ett uttrycksträd får inte innehålla en null-sammanslutningstilldelning.
- CS8790 - Ett uttrycksträd får inte innehålla mönstermatchning System.Index eller System.Range indexerartillgång.
-
CS8791 - Ett uttrycksträd får inte innehålla ett uttryck med "från-slut-index" ('
^'). -
CS8792 - Ett uttrycksträd får inte innehålla ett intervalluttryck (''
..). -
CS8810 - '
&' på metodgrupper kan inte användas i uttrycksträd. -
CS8849 - Ett uttrycksträd får inte innehålla ett
with-uttryck. - CS8927 - Ett uttrycksträd får inte innehålla åtkomst till en statisk virtuell eller abstrakt gränssnittsmedlem.
- CS8952 - Ett uttrycksträd får inte innehålla en interpolerad stränghanterarkonvertering.
- CS8972 - Ett lambda-uttryck med attribut kan inte konverteras till ett uttrycksträd.
- CS9170 - Ett uttrycksträd får inte innehålla en infogad matrisåtkomst eller konvertering.
- CS9175 - Ett uttrycksträd får inte innehålla ett samlingsuttryck.
- CS9226 - Ett uttrycksträd får inte innehålla en utökad form av params-samlingsparameter som inte är matrisparameter.
- CS9296 - Ett uttrycksträd får inte innehålla en tilläggsegenskap eller indexerareåtkomst.
- CS9307 - Ett uttrycksträd får inte innehålla en namngiven argumentspecifikation utan position.
- CS9369 - Ett uttrycksträd får inte innehålla en unionskonvertering.
Begränsningar för uttrycksträd
Alla felen i föregående lista tyder på att du använde en C#-uttryckstyp som inte tillåts i ett uttrycksträd. I de flesta fall representerar de förbjudna uttrycken syntax som introducerats efter C# 3.0. De här uttrycken är förbjudna eftersom det skulle skapa en icke-bakåtkompatibel ändring i alla bibliotek som parsar uttrycksträd. Alla bibliotek skulle behöva förbättras för att parsa nya C#-uttryck om nyare konstruktioner tilläts.
Följande uttryck är förbjudna:
- Anrop av partiella metoder som inte har någon implementeringsdeklaration.
- Anropen av villkorsstyrda metoder har tagits bort.
- Anrop av lokala funktioner.
-
asynclambda-uttryck. - Använda
baseför att anropa en virtuell metod som deklarerats i en basklass direkt. - tilldelningsoperationer .
- statement lambdas.
- fler-dimensionella array-initialiseringar . Skapa och initiera i stället en flerdimensionell matris utanför uttrycksträdet.
-
dynamicoperationer. - uttryck för mönstermatchning.
- Tupellitteraler och många tupeloperationer, till exempel likhetsjämförelser.
-
throwuttryck. -
ta bort (
_) deklarationer. - Index- och intervalloperatorerna.
- Icke-destruktiv ändring med
with-uttryck. - Deklarera eller komma åt inline-matriser.
- Inkluderar samlingsuttryck.
- Konverteringar av unioner.
- nullvillkorsoperatorn och null-sammanslagning.
-
ref structtyper, till exempel System.Span<T> och System.ReadOnlySpan<T>. -
in,out, ochrefparametrar, inklusiveoutvariabeldeklarationer. -
refreturer. - Anrop till metoder som returnerar via
ref. - Komma åt statiska abstrakta gränssnittsmedlemmar.
- Infogade matriser.
- Modifieraren
paramsför allt utom endimensionella matriser.
Andra begränsningar är:
- Det går inte att komma åt utökningsegenskaper och indexerare som utökningar.
- Det går inte att tillämpa attribut på lambda-uttrycket, dess parametrar eller dess returvärde.
- Lambda-uttrycket måste konverteras till en typ som härleds från System.Linq.Expressions.Expression vars typparameter är en ombudstyp.
- Begränsade namngivna och valfria parametrar. Uttrycket kan inte anropa en metod som anger namngivna argument och kan inte använda standardvärdet för en valfri parameter.
- Det går inte att använda ordboksinitierare eller tilläggsmetoder
Add. - Måluttrycket måste vara ett lambda-uttryck. Konstanter och variabler tillåts inte, men ett lambda-uttryck som returnerar en konstant eller variabel är det.
- Osäkra pekaråtgärder tillåts inte.
- COM-anrop måste inkludera
refpå argument; det kan inte antas som underförstått. - Det nyckelord som inte stöds
__arglist.