Delen via


Fouten en waarschuwingen oplossen die zijn gegenereerd opgetreden op expressies die niet zijn toegestaan in expressiestructuren

In dit artikel worden de volgende compilerfouten behandeld:

  • Gedeeltelijke methoden cs0765 - met alleen een definiërende declaratie of verwijderde voorwaardelijke methoden kunnen niet worden gebruikt in expressiestructuren.
  • CS0831 - Een expressiestructuur bevat mogelijk geen basistoegang.
  • CS0832 - Een expressiestructuur bevat mogelijk geen toewijzingsoperator
  • CS0834 - Een lambda-expressie met een instructietekst kan niet worden geconverteerd naar een expressiestructuur.
  • CS0835 - Kan lambda niet converteren naar een expressiestructuur waarvan het typeargument 'type' geen gemachtigde is.
  • CS0838 - Een expressiestructuur bevat mogelijk geen initialisatiefunctie voor multidimensionale matrices.
  • CS0845 - Een lambda van een expressiestructuur bevat mogelijk geen samenvouwende operator met een null- of standaard letterlijke linkerzijde.
  • CS0853 - Een expressiestructuur bevat mogelijk geen benoemde argumentspecificatie.
  • CS0854 - Een expressiestructuur bevat mogelijk geen aanroep of aanroep die gebruikmaakt van optionele argumenten.
  • CS0855 - Een expressiestructuur bevat mogelijk geen geïndexeerde eigenschap.
  • CS1944 - Een expressiestructuur bevat mogelijk geen onveilige aanwijzerbewerking.
  • CS1945 - Een expressiestructuur bevat mogelijk geen anonieme methode-expressie.
  • CS1946 - Een anonieme methode-expressie kan niet worden geconverteerd naar een expressiestructuur.
  • CS1951 - Een expressiestructuur lambda mag geen , in of out parameter bevattenref.
  • CS1952 - Een expressiestructuur lambda bevat mogelijk geen methode met variabele argumenten.
  • CS1963 - Een expressiestructuur bevat mogelijk geen dynamische bewerking.
  • CS1989 - Async lambda-expressies kunnen niet worden geconverteerd naar expressiestructuren.
  • CS2037 - Een expressiestructuur lambda bevat mogelijk geen COM-aanroep waarbij verw is weggelaten op argumenten.
  • CS7053 - Een expressiestructuur bevat mogelijk geen 'functie'.
  • CS8072 - Een expressiestructuur lambda mag geen null-doorgifteoperator bevatten.
  • CS8074 - Een lambda voor een expressiestructuur bevat mogelijk geen initialisatiefunctie voor woordenlijst.
  • CS8075 - Een extensiemethode Add wordt niet ondersteund voor een initialisatiefunctie voor verzamelingen in een expressie lambda.
  • Cs8110 - Een expressiestructuur bevat mogelijk geen verwijzing naar een lokale functie.
  • CS8122 - Een expressiestructuur bevat mogelijk geen operator voor patroonkoppelingis.
  • CS8143 - Een expressiestructuur mag geen letterlijke tuple bevatten.
  • Cs8144 - Een expressiestructuur bevat mogelijk geen tupleconversie.
  • CS8153 - Een lambda van een expressiestructuur bevat mogelijk geen aanroep naar een methode, eigenschap of indexeerfunctie die met verwijzing wordt geretourneerd.
  • CS8155 - Lambda-expressies die met verwijzing worden geretourneerd, kunnen niet worden geconverteerd naar expressiestructuren.
  • Cs8188 - Een expressiestructuur bevat mogelijk geen throw-expressie.
  • CS8198 - Een expressiestructuur bevat mogelijk geen declaratie van een argumentvariabele.
  • Cs8207 - Een expressiestructuur bevat mogelijk geen verwijdering.
  • CS8382 - Een expressiestructuur mag geen tuple == of != operator bevatten.
  • Cs8514 - Een expressiestructuur bevat mogelijk geen switchexpressie.
  • Cs8640-expressiestructuur - kan geen waarde van verw-struct of beperkt type bevatten.
  • Cs8642 - Een expressiestructuur bevat mogelijk geen null-samenvouwende toewijzing.
  • Cs8790 - Een expressiestructuur bevat mogelijk geen patroonSystem.Index- of System.Range indexeerfunctietoegang.
  • CS8791 - Een expressiestructuur bevat mogelijk geen from-end-indexexpressie ('^'').
  • CS8792 - Een expressiestructuur mag geen bereikexpressie ('..'') bevatten.
  • CS8810 - &'' voor methodegroepen kan niet worden gebruikt in expressiestructuren.
  • CS8849 - Een expressiestructuur mag geen -expression bevattenwith.
  • CS8927 - Een expressiestructuur bevat mogelijk geen toegang tot een statisch lid van de virtuele of abstracte interface.
  • CS8952 - Een expressiestructuur bevat mogelijk geen geïnterpoleerde tekenreekshandlerconversie.
  • CS8972 - Een lambda-expressie met kenmerken kan niet worden geconverteerd naar een expressiestructuur.
  • CS9170 - Een expressiestructuur bevat mogelijk geen inlinematrixtoegang of -conversie.
  • CS9175 - Een expressiestructuur bevat mogelijk geen verzamelingsexpressie.
  • Cs9226 - Een expressiestructuur bevat mogelijk geen uitgevouwen vorm van parameterverzameling voor niet-matrixparams.

Beperkingen voor expressiestructuur

Alle fouten in de voorgaande lijst geven aan dat u een C#-expressietype hebt gebruikt dat niet is toegestaan in een expressiestructuur. In de meeste gevallen vertegenwoordigen de verboden expressies de syntaxis die na C# 3.0 is geïntroduceerd. Deze expressies zijn niet toegestaan omdat ze een belangrijke wijziging zouden maken in alle bibliotheken die expressiestructuren parseren. Alle bibliotheken moeten worden uitgebreid om nieuwe C#-expressies te parseren als nieuwere constructs zijn toegestaan.

De volgende expressies zijn verboden:

Andere beperkingen zijn:

  • Kenmerken kunnen niet worden toegepast op de lambda-expressie, de bijbehorende parameters of return.
  • De lambda-expressie moet worden geconverteerd naar een type dat is afgeleid van System.Linq.Expressions.Expression wiens typeparameter een gemachtigdentype is.
  • benoemde en optionele parameters zijn beperkt. De expressie kan geen methode aanroepen die benoemde argumenten opgeeft en kan de standaardwaarde van een optionele parameter niet gebruiken.
  • Initialisatiefuncties voor woordenlijst zijn niet toegestaan. Geen van beide uitbreidingsmethoden Add .
  • De doelexpressie moet een lambda-expressie zijn. Constanten en variabelen zijn niet toegestaan, maar een lambda-expressie die een constante of variabele retourneert, is.
  • Onveilige aanwijzerbewerkingen zijn niet toegestaan.
  • COM-aanroepen moeten argumenten bevatten ref ; deze kunnen niet worden geïmpliceerd.
  • Het niet-ondersteunde __arglist trefwoord is niet toegestaan.