Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассматриваются следующие ошибки компилятора:
- Частичные методы CS0765 - с определением объявления или удаления условных методов нельзя использовать в деревах выражений.
- CS0831 - Дерево выражений может не содержать базовый доступ.
- CS0832 - Дерево выражений может не содержать оператора назначения
- CS0834 - Выражение лямбда-выражения с текстом инструкции нельзя преобразовать в дерево выражений.
- CS0835 - Не удается преобразовать лямбда-код в дерево выражений, аргумент типа которого "type" не является типом делегата.
- Дерево выражений CS0838 - может не содержать инициализатор многомерного массива.
- CS0845 - Лямбда-дерево выражений может не содержать оператора объединения со значением NULL или литералом по умолчанию слева.
- CS0853 - Дерево выражений может не содержать спецификацию именованного аргумента.
- Cs0854 - Дерево выражений может не содержать вызов или вызов, использующий необязательные аргументы.
- Дерево выражений CS0855 - Может не содержать индексированного свойства.
- CS1944 - Дерево выражений может не содержать небезопасную операцию указателя.
- Дерево выражений CS1945 - может не содержать анонимное выражение метода.
- CS1946 - Не удается преобразовать анонимное выражение метода в дерево выражений.
-
CS1951 - Лямбда дерева выражений
ref
in
может не содержать лямбда-файл илиout
параметр. - CS1952 - Лямбда-дерево выражений может не содержать метод с аргументами переменной.
- Cs1963 - Дерево выражений может не содержать динамической операции.
- Выражения Async лямбда-выражений CS1989 - нельзя преобразовать в деревья выражений.
- CS2037 - Лямбда-дерево выражений может не содержать вызов COM с ссылкой, опущенной по аргументам.
- CS7053 - Дерево выражений может не содержать "feature".
- CS8072 - Лямбда-дерево выражений может не содержать оператора распространения null.
- CS8074 - Лямбда-дерево выражений может не содержать инициализатор словаря.
-
Метод расширения CS8075 -
Add
Не поддерживается для инициализатора коллекции в лямбда-выражении. - Дерево выражений CS8110 - может не содержать ссылку на локальную функцию.
-
Cs8122 - Дерево выражений может не содержать
is
оператора сопоставления шаблонов. - CS8143 - Дерево выражений может не содержать литерал кортежа.
- Cs8144 - Дерево выражений может не содержать преобразования кортежей.
- CS8153 - Лямбда-дерево выражений может не содержать вызов метода, свойства или индексатора, возвращаемого по ссылке.
- Лямбда-выражения CS8155 - , возвращаемые по ссылке, нельзя преобразовать в деревья выражений.
- Дерево выражений CS8188 - может не содержать выражения броска.
- Дерево выражений CS8198 - может не содержать объявление переменной аргументов вне.
- Дерево выражений CS8207 - может не содержать отмены.
-
CS8382 - Дерево выражений может не содержать кортеж
==
или!=
оператор. - Cs8514 - Дерево выражений может не содержать выражение switch.
- Дерево выражений CS8640 - не может содержать значение структуры ref или ограниченного типа.
- Cs8642 - Дерево выражений может не содержать назначения объединения null.
- Дерево выражений CS8790 - может не содержать доступ к шаблону System.Index или System.Range индексатору.
-
CS8791 - Дерево выражений не может содержать выражение из конечного индекса ('
^
). -
CS8792 - Дерево выражений не может содержать выражение диапазона ('
..
). -
CS8810 - '
&
' в группах методов нельзя использовать в деревах выражений. -
Дерево выражений CS8849 -
with
может не содержать выражение -. - Cs8927 - Дерево выражений может не содержать доступ к статическому виртуальному или абстрактного члену интерфейса.
- Дерево выражений CS8952 - может не содержать преобразования интерполированного обработчика строк.
- ВЫРАЖЕНИЕ CS8972 - лямбда-выражение с атрибутами нельзя преобразовать в дерево выражений.
- Дерево выражений CS9170 - может не содержать встроенный доступ к массиву или преобразование.
- Дерево выражений CS9175 - может не содержать выражение коллекции.
- Дерево выражений CS9226 - может не содержать развернутую форму параметра коллекции params, отличного от массива.
- CS9296 - Дерево выражений не может содержать доступ к свойству расширения.
- CS9307 - Дерево выражений не может содержать спецификацию именованного аргумента вне позиции.
Ограничения дерева выражений
Все ошибки в предыдущем списке указывают, что вы использовали тип выражения C#, который не разрешен в дереве выражений. В большинстве случаев запрещенные выражения представляют синтаксис, представленный после C# 3.0. Эти выражения запрещены, так как позволяет им создавать критические изменения во всех библиотеках, которые анализируют деревья выражений. Все библиотеки должны быть улучшены для синтаксического анализа новых выражений C#, если были разрешены новые конструкции.
Запрещены следующие выражения:
- Вызовы частичных методов , которые не имеют объявления реализации.
- Вызовы условных методов, которые были удалены .
- Вызовы локальных функций.
-
async
лямбда-выражения не допускаются. - Использование
base
доступа к непосредственному вызову виртуального метода, объявленного в базовом классе. - операции назначения .
- лямбда-операторы не допускаются.
- инициализаторы многомерного массива . Вместо этого необходимо создать и инициализировать многомерный массив вне дерева выражений.
-
dynamic
операции не разрешены. - Выражения сопоставления шаблонов не допускаются.
- Кортежные литералы и многие операции кортежа, такие как сравнение равенства, не допускаются.
-
throw
выражения не допускаются. - () объявлений.
- Операторы индекса и диапазона не допускаются.
- Неразрушительная мутация с помощью
with
выражений не допускается. - Не удается объявить или получить доступ к встроенным массивам.
- Не удается включить выражения коллекции.
- Недопустимые операторы распространения null и объединения null.
-
ref struct
типы, такие как System.Span<T> и System.ReadOnlySpan<T> не разрешены. -
in
,out
иref
параметры, включаяout
объявления переменных, не допускаются. -
ref
возвращать не разрешено. - Вызовы методов, возвращаемых не
ref
допустимыми. - Доступ к элементам статического абстрактного интерфейса невозможно.
- Встроенные массивы.
- Модификатор
params
допускается только в одномерных массивах. Другие типы коллекций не допускаются.
Другие ограничения:
- Свойства расширений не могут быть доступны через расширения.
- Атрибуты нельзя применять к лямбда-выражению, его параметрам или возвращаемым.
- Лямбда-выражение должно быть преобразовано в тип, производный от System.Linq.Expressions.Expression параметра типа делегата.
- именованные и необязательные параметры ограничены. Выражение не может вызвать метод, указывающий именованные аргументы, и он не может использовать значение по умолчанию необязательного параметра.
-
Инициализаторы словаря не допускаются. Ни методы расширения
Add
. - Целевое выражение должно быть лямбда-выражением. Константы и переменные не допускаются, но лямбда-выражение, возвращающее константу или переменную, является.
- Небезопасные операции указателя не допускаются.
- Вызовы COM должны включаться
ref
в аргументы; он не может быть подразумеваемым. - Неподдерживаемое
__arglist
ключевое слово запрещено.