Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Ошибки и предупреждения, связанные с модификатором
Существует несколько ошибок , связанных с инструкцией lock и синхронизацией потоков:
- CS0225: параметр params должен быть одномерным массивом или иметь допустимый тип коллекции
- CS0231: параметр params должен быть последним параметром в формальном списке параметров.
- CS0466: method1 не должен иметь параметр params, так как метод2 не имеет
- CS0674: не используйте
System.ParamArrayAttributeилиSystem.ParamArrayAttribute/System.Runtime.CompilerServices.ParamCollectionAttribute. Вместо этого используйте ключевоеparamsслово. - CS0758: оба объявления частичных методов должны использовать
paramsпараметр или не может использоватьparamsпараметр. - CS1104: массив параметров нельзя использовать с
thisмодификатором в методе расширения. - CS1611: параметр params не может быть объявлен как в
refилиout - CS1670:
paramsнедопустимо в этом контексте - CS1751: не удается указать значение по умолчанию для массива параметров.
- CS9218: аргументы типа для метода не могут быть выведены из использования, так как используется аргумент с динамическим типом, а метод имеет параметр коллекции params, отличный от массива. Попробуйте явно указать аргументы типа.
- CS9223: создание коллекции params приводит к бесконечной цепочке вызова конструктора.
- CS9224: метод не может быть менее видимым, чем член с коллекцией params.
- CS9225: конструктор оставляет обязательный элемент неинициализированным.
- CS9227: тип не содержит определения для подходящего метода экземпляра
Add. - CS9228: тип коллекции params, отличный от массива, должен иметь применимый конструктор, который можно вызывать без аргументов.
Правила объявления метода
Следующие ошибки указывают на использование params модификатора в параметре, если params модификатор не разрешен в этом контексте:
- CS0231: параметр params должен быть последним параметром в формальном списке параметров.
- CS1104: массив параметров нельзя использовать с
thisмодификатором в методе расширения. - CS1611: параметр params не может быть объявлен как в
refилиout - CS1670:
paramsнедопустимо в этом контексте - CS1751: не удается указать значение по умолчанию для массива параметров.
Компилятор применяет следующие правила для использования params модификатора в параметре метода:
paramsМодификатор разрешен только в последнем параметре в формальном списке параметров. Сюда входят все параметры со значением по умолчанию.- Не удается включить аргумент по умолчанию для параметра при
paramsиспользовании модификатора. paramsМодификатор не может применяться к ссылочным параметру. Ссылочный параметр является одним из них с модификатором или модификаторомinrefref readonly.outparamsМодификатор не может сочетаться сthisмодификатором метода расширения.paramsМодификатор нельзя использовать в перегруженном операторе.
В версиях до C# 12 params модификатор нельзя использовать для параметра анонимного метода или лямбда-выражения.
Правила типа параметров и аргументов
Следующие ошибки указывают, что тип используемого params параметра недопустим:
- CS9218: аргументы типа для метода не могут быть выведены из использования, так как используется аргумент с динамическим типом, а метод имеет параметр коллекции params, отличный от массива. Попробуйте явно указать аргументы типа.
- CS0225: параметр params должен быть одномерным массивом или иметь допустимый тип коллекции
- CS9227: тип не содержит определения для подходящего метода экземпляра
Add. - CS9228: тип коллекции params, отличный от массива, должен иметь применимый конструктор, который можно вызывать без аргументов.
В версиях до C# 13 params модификатор разрешен только в одномерных массивах. Другие типы не были допустимыми.
Начиная с C# 13 можно использовать любой допустимый тип коллекции. Однако некоторые ограничения остаются. Тип коллекции должен соответствовать тем же правилам, что и целевой объект выражения коллекции.
Другие ошибки парамс
Следующие ошибки указывают на другие проблемы с использованием params модификатора:
- CS0466: method1 не должен иметь параметр params, так как метод2 не имеет
- CS0674: не используйте
System.ParamArrayAttributeилиSystem.Runtime.CompilerServices.ParamCollectionAttribute. Вместо этого используйте ключевоеparamsслово. - CS0758: оба объявления частичных методов должны использовать
paramsпараметр или не может использоватьparamsпараметр. - CS9223: создание коллекции params приводит к бесконечной цепочке вызова конструктора.
- CS9224: метод не может быть менее видимым, чем член с коллекцией params.
- CS9225: конструктор оставляет обязательный элемент неинициализированным.
Метод, реализующий интерфейс, должен включать params модификатор, если и только если элемент интерфейса имеет params модификатор. Аналогичным образом оба объявления partial метода должны включать params модификатор, или ни один из них не может включать params модификатор.
Необходимо использовать модификатор params . Вы не можете применить эквивалентные атрибуты либо System.ParamArrayAttribute System.Runtime.CompilerServices.ParamCollectionAttribute.
Компилятор создает одну из последних трех ошибок в предыдущем списке, когда код, созданный для создания типа коллекции, недопустим:
- Компилятор выдает CS9223 , когда код, создаваемый для создания коллекции, также содержит коллекцию парам одного типа. Как правило,
Addметод принимаетparamsколлекцию одного типа. - Компилятор выдает CS9224 , когда
Createметод для типа коллекции менее доступен, чем метод,paramsпринимаюющий параметр типа коллекции. - Компилятор выдает CS9225 , когда тип коллекции имеет обязательный элемент, и конструктор без параметров не инициализирует этот элемент и имеет System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute конструктор без параметров.