Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano następujące błędy kompilatora:
- CS0765 Metody częściowe - z tylko deklaracją definiującą lub usuniętymi metodami warunkowymi nie mogą być używane w drzewach wyrażeń.
- CS0831 - Drzewo wyrażeń może nie zawierać dostępu podstawowego.
- CS0832 - Drzewo wyrażeń może nie zawierać operatora przypisania
- CS0834 - Nie można przekonwertować wyrażenia lambda z treścią instrukcji na drzewo wyrażeń.
- CS0835 - Nie można przekonwertować lambda na drzewo wyrażeń, którego argument typu "type" nie jest typem delegata.
- CS0838 - Drzewo wyrażeń może nie zawierać inicjatora tablicy wielowymiarowej.
- CS0845 - Drzewo wyrażeń lambda może nie zawierać operatora łączenia z pustym lub domyślnym literałem po lewej stronie.
- CS0853 - Drzewo wyrażeń może nie zawierać nazwanej specyfikacji argumentu.
- CS0854 - Drzewo wyrażeń nie może zawierać wywołania ani wykonania używającego opcjonalnych argumentów.
- CS0855 - Drzewo wyrażeń może nie zawierać właściwości indeksowanej.
- CS1944 - Drzewo wyrażeń może nie zawierać niebezpiecznej operacji wskaźnika.
- CS1945 - Drzewo wyrażeń może nie zawierać anonimowego wyrażenia metody.
- CS1946 - Nie można przekonwertować anonimowego wyrażenia metody na drzewo wyrażeń.
-
CS1951 - Drzewo wyrażeń lambda może nie zawierać parametru
reflubin.out - CS1952 - Drzewo wyrażeń lambda może nie zawierać metody z argumentami zmiennych.
- CS1963 - Drzewo wyrażeń może nie zawierać operacji dynamicznej.
- Wyrażenia lambda asynchronicznego CS1989 - nie mogą być konwertowane na drzewa wyrażeń.
- CS2037 - Drzewo wyrażeń lambda nie może zawierać wywołania COM z pominiętym odniesieniem "ref" w argumentach.
- CS7053 - Drzewo wyrażeń nie może zawierać "funkcji".
- CS8072 - Drzewo wyrażeń lambda może nie zawierać operatora propagacji wartości null.
- CS8074 - Drzewo wyrażeń lambda może nie zawierać inicjatora słownika.
-
CS8075 - Metoda rozszerzenia
Addnie jest obsługiwana dla inicjatora kolekcji w wyrażeniu lambda. - CS8110 - Drzewo wyrażeń może nie zawierać odwołania do funkcji lokalnej.
-
CS8122 - Drzewo wyrażeń może nie zawierać operatora dopasowania wzorca "
is". - CS8143 - Drzewo wyrażeń nie może zawierać literału krotki.
- CS8144 - Drzewo wyrażeń nie może zawierać konwersji krotki.
- CS8153 - Drzewo wyrażeń lambda może nie zawierać wywołania metody, właściwości lub indeksatora zwracanego przez odwołanie.
- Wyrażenia lambda CS8155 - , które zwracają przez odwołanie, nie mogą być przekształcane na drzewa wyrażeń.
- CS8188 - Drzewo wyrażeń może nie zawierać wyrażenia-throw.
- CS8198 - Drzewo wyrażeń może nie zawierać deklaracji zmiennej argumentu out.
- CS8207 - Drzewo wyrażeń może nie zawierać odrzucenia.
-
CS8382 - Drzewo wyrażeń nie może zawierać krotki
==ani!=operatora. - CS8514 - Drzewo wyrażeń może nie zawierać wyrażenia przełącznika.
- Drzewo wyrażeń CS8640 - nie może zawierać wartości struktury ref lub typu ograniczonego.
- CS8642 - Drzewo wyrażeń nie może zawierać przypisania z wykorzystaniem operatora łączenia wartości null.
- CS8790 - Drzewo wyrażeń może nie zawierać dostępu do wzorca System.Index ani System.Range indeksatora.
-
CS8791 - Drzewo wyrażeń nie może zawierać wyrażenia indeksu od końca ('
^'). -
CS8792 - Drzewo wyrażeń może nie zawierać wyrażenia zakresu ('
..'). -
Cs8810 - '
&' w grupach metod nie można używać w drzewach wyrażeń. -
CS8849 - Drzewo wyrażeń nie może zawierać wyrażenia
with. - CS8927 - Drzewo wyrażeń nie może zawierać dostępu do statycznego elementu członkowskiego interfejsu, który jest wirtualny lub abstrakcyjny.
- CS8952 - Drzewo wyrażeń może nie zawierać interpolowanej konwersji procedury obsługi ciągów.
- CS8972 - Nie można przekonwertować wyrażenia lambda z atrybutami na drzewo wyrażeń.
- CS9170 - Drzewo wyrażeń może nie zawierać wbudowanego dostępu do tablicy ani konwersji.
- CS9175 - Drzewo wyrażeń może nie zawierać wyrażenia kolekcji.
- CS9226 - Drzewo wyrażeń nie może zawierać rozszerzonej formy parametrów kolekcji, które nie są tablicą.
- CS9296 - Drzewo wyrażeń może nie zawierać dostępu do właściwości rozszerzenia.
- CS9307 - Drzewo wyrażeń może nie zawierać nazwanej specyfikacji argumentu poza pozycją.
- CS9369 - Drzewo wyrażeń nie może zawierać konwersji unii.
Ograniczenia drzewa wyrażeń
Wszystkie błędy na powyższej liście wskazują, że użyto typu wyrażenia języka C#, który nie jest dozwolony w drzewie wyrażeń. W większości przypadków niedozwolone wyrażenia reprezentują składnię wprowadzoną po języku C# 3.0. Te wyrażenia są zabronione, ponieważ ich dozwolenie spowodowałoby wprowadzenie niezgodności we wszystkich bibliotekach, które analizują drzewa wyrażeń. Wszystkie biblioteki musiałyby zostać ulepszone, aby analizować nowe wyrażenia języka C#, jeśli nowsze konstrukcje były dozwolone.
Następujące wyrażenia są zabronione:
- Wywołania częściowych metod , które nie mają deklaracji implementacyjnej.
- Wywołania metod warunkowych, które zostały usunięte.
- Wywołania funkcji lokalnych.
-
asyncWyrażenia lambda nie są dozwolone. - Używanie
basedostępu do bezpośredniego wywoływania metody wirtualnej zadeklarowanej w klasie bazowej. - operacje przypisania.
- wyrażenia lambdas nie są dozwolone.
- inicjalizatory tablic wielowymiarowych. Zamiast tego należy utworzyć i zainicjować tablicę wielowymiarową poza drzewem wyrażeń.
-
dynamicoperacje nie są dozwolone. - Wyrażenia dopasowania wzorca nie są dozwolone.
- Literały krotek i wiele operacji na krotkach, takich jak porównania równości, nie są dozwolone.
-
throwwyrażenia nie są dozwolone. -
odrzuć deklaracje (
_). - Operatory indeksu i zakresu nie są dozwolone.
- Mutacja niedestrukcyjna przy użyciu
withwyrażeń nie jest dozwolona. - Nie można zadeklarować ani uzyskać dostępu do tablic wbudowanych.
- Nie można uwzględnić wyrażeń kolekcji.
- Konwersje unii nie są dozwolone.
- Operatory propagacji null i łączenia null nie są dozwolone.
-
ref structtypy, takie jak System.Span<T> i System.ReadOnlySpan<T> nie są dozwolone. -
in,out, irefparametry, w tym deklaracje zmiennychout, nie są dozwolone. -
refzwracanie nie jest dozwolone. - Wywołania metod zwracanych przez
refnie są dozwolone. - Nie można uzyskać dostępu do elementów statycznych abstrakcyjnych interfejsu.
- Tablice liniowe.
- Modyfikator
paramsjest dozwolony tylko w tablicach jednowymiarowych. Inne typy kolekcji nie są dozwolone.
Inne ograniczenia to:
- Nie można uzyskać dostępu do właściwości rozszerzenia w formie rozszerzeń.
- Atrybuty nie mogą być stosowane do wyrażenia lambda, jego parametrów ani zwracania.
- Wyrażenie lambda musi być konwertowane na typ pochodzący z System.Linq.Expressions.Expression którego parametr typu jest typem delegowanym.
- parametry nazwane i opcjonalne są ograniczone. Wyrażenie nie może wywołać metody określającej nazwane argumenty i nie może użyć wartości domyślnej opcjonalnego parametru.
-
Inicjatory słowników nie są dozwolone. Żadna z nich nie jest metodami rozszerzenia
Add. - Wyrażenie docelowe musi być wyrażeniem lambda. Stałe i zmienne nie są dozwolone, ale wyrażenie lambda zwracające stałą lub zmienną jest.
- Niebezpieczne operacje wskaźnika nie są dozwolone.
- Wywołania COM muszą zawierać
refprzy argumentach; nie można tego zakładać. - Nieobsługiwane
__arglistsłowo kluczowe jest niedozwolone.