Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассматриваются следующие ошибки компилятора:
- Оператор CS0034 неоднозначно для операндов типа '
type1
' и 'type2
' - - Оператор CS0035 - неоднозначно для операнда типа "type"
- Тип CS0111 - уже определяет элемент с именем name с теми же типами параметров.
- CS0121 - Вызов является неоднозначным между следующими методами или свойствами.
- Неоднозначные пользовательские преобразования CS0457 - при преобразовании из type1 в type2
- CS0663 - Не удается определить перегруженные методы, которые отличаются только от
ref
иout
. - Метод доступа к свойствам CS1007 - уже определен
- Ожидаемый унарный оператор CS1019 - , допускающий перегрузку
- Ожидаемый двоичный оператор CS1020 - , допускающий перегрузку
- CS1501 - No overload for method 'method' принимает аргументы number
- Перегруженный двоичный оператор CS1534 - "operator" принимает два параметра.
- Перегруженный унарный оператор CS1535 - принимает один параметр
- CS1928 - 'Type" не содержит определения для метода, а лучший перегрузка метода расширения "method" имеет некоторые недопустимые аргументы.
- CS1929'TypeA - ' не содержит определения для метода, а для оптимальной перегрузки метода расширения TypeB.method требуется приемник типа TypeC.
- Оператор CS8315 - неоднозначный для операндов
- CS9261 - Не удается использовать "
OverloadResolutionPriorityAttribute
" для переопределяющего элемента. - CS9262 - Не удается использовать "
OverloadResolutionPriorityAttribute
" для этого элемента.
Кроме того, следующее предупреждение компилятора:
- Перегруженный метод CS3006 - " метод, отличающийся только в
ref
илиout
в ранге массива, не соответствует CLS
Неправильное определение перегрузки
- CS0663 - Не удается определить перегруженные методы, которые отличаются только от
ref
иout
. - Ожидаемый унарный оператор CS1019 - , допускающий перегрузку
- Ожидаемый двоичный оператор CS1020 - , допускающий перегрузку
- Перегруженный двоичный оператор CS1534 - "operator" принимает два параметра.
- Перегруженный унарный оператор CS1535 - принимает один параметр
Кроме того, следующее предупреждение компилятора:
- Перегруженный метод CS3006 - " метод, отличающийся только в
ref
илиout
в ранге массива, не соответствует CLS
При создании перегруженных операторов в классе подпись должна соответствовать количеству параметров, необходимых для этого оператора. В определении оператора имеется неправильное количество параметров.
Кроме того, операторы перегрузки должны использовать определенное имя оператора. Единственным исключением является создание оператора преобразования, где имя оператора соответствует возвращаемого типа преобразования.
Повторяющиеся перегрузки, определенные
- Тип CS0111 - уже определяет элемент с именем name с теми же типами параметров.
- Метод доступа к свойствам CS1007 - уже определен
Эти ошибки указывают на то, что вы создали перегрузки, которые не отличаются. Некоторые из распространенных причин:
- Соответствующие типы параметров имеют преобразование удостоверений. Например
M(dynamic)
, или , илиM2(string)
M(object)
M2(string?)
. - Типы параметров сопоставления отличаются только в модификаторе ссылок. Например,
M(ref int)
иM(out int)
. - Вы включили как объект,
init
так иset
метод доступа для свойства.
Перегрузка не найдена
- CS1501 - No overload for method 'method' принимает аргументы number
- CS1928 - 'Type" не содержит определения для метода, а лучший перегрузка метода расширения "method" имеет некоторые недопустимые аргументы.
- CS1929'TypeA - ' не содержит определения для метода, а для оптимальной перегрузки метода расширения TypeB.method требуется приемник типа TypeC.
Код вызывает метод, в котором существует имя, но некоторые аргументы неверны, или вы использовали неправильное количество аргументов. Если вы пытаетесь вызвать метод расширения, содержащий класс может находиться в пространстве имен, которое не импортировано.
Примечание.
Ошибка CS1928
не используется последними компиляторами. Более новые компиляторы используют CS1929
исключительно.
Неоднозначные перегрузки
- Оператор CS0034 - неоднозначно для операндов типа '
type1
' и 'type2
' - Оператор CS0035 - неоднозначно для операнда типа "type"
- CS0121 - Вызов является неоднозначным между следующими методами или свойствами.
- Неоднозначные пользовательские преобразования CS0457 - при преобразовании из type1 в type2
- Оператор CS8315 - неоднозначный для операндов
Эти ошибки указывают на то, что не существует одной лучшей перегрузки, чем другие. Существует несколько возможных причин этих ошибок:
Для каждого параметра лучше использовать разные аргументы. Одно может быть точным совпадением, а для другого требуется преобразование:
void M(int a, double b) { } void M(double a, int b) {} M(1, 1); // ambiguous
Несколько определяемых пользователем операторов преобразования являются кандидатами. Операторы преобразования можно объявить в исходном типе, его базовых типах, целевом типе или базовых типах. Если оператор преобразования определен в нескольких случаях, компилятор не может выбрать.
Несколько операторов преобразования могут выполнять совместимое преобразование.
Можно выбрать один или несколько аргументов
default
(неdefault(T)
) и несколько типов.
В большинстве случаев добавление явного приведения может указать, какая перегрузка должна быть выбрана.
Приоритет разрешения перегрузки
- CS9261 - Не удается использовать "
OverloadResolutionPriorityAttribute
" для переопределяющего элемента. - CS9262 - Не удается использовать "
OverloadResolutionPriorityAttribute
" для этого элемента.
Код нарушил правила использования OverloadResolutionPriorityAttribute одной перегрузки вместо другой. Нельзя применить к следующим типам OverloadResolutionPriorityAttribute
методов:
- Свойства неиндексатора
- Методы доступа к свойствам, индексатору или событиям
- Операторы преобразования
- Лямбда-выражения
- Локальные функции
- Методы завершения
- Статические конструкторы
Кроме того, вы не можете применить OverloadResolutionPriorityAttribute
его к элементу override
virtual
или abstract
члену. Компилятор использует значение из объявления базового типа.