Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Ошибки и предупреждения, связанные с
Вы можете столкнуться со следующими ошибками, связанными с partial объявлениями типов и partial членов:
- CS0260: отсутствует частичный модификатор для объявления типа; другое частичное объявление этого типа существует
- CS0261: частичные объявления типа должны быть всеми классами, всеми структурами или всеми интерфейсами.
- CS0262: частичные объявления типа имеют конфликтующие модификаторы специальных возможностей
- CS0263: частичные объявления типа не должны указывать разные базовые классы
- CS0264: частичные объявления типа должны иметь одинаковые имена параметров типа в том же порядке.
- CS0265: частичные объявления типа имеют несогласованные ограничения для параметра типа "type parameter"
-
CS0267: модификатор '
partial' может отображаться только перед 'class', 'record' ', '', 'structinterface' или методом или типом возвращаемого свойства. - CS0282: между полями в нескольких объявлениях частичного класса или структуры "тип" не определен порядок. Чтобы указать порядок, все поля экземпляра должны находиться в одном объявлении.
-
CS0501: "функция-член" должна объявить текст, так как он не помечен
abstract,externилиpartial -
CS0750: частичный член не может иметь модификатор "
abstract". -
CS0751: частичный элемент должен быть объявлен в частичном
classили частичномstruct - CS0754: частичный член может явно не реализовать метод интерфейса.
- CS0755: оба объявления частичных методов должны быть методами расширения или ни в чем не могут быть методом расширения.
- CS0756: частичный метод может не содержать несколько определяющих объявлений.
- CS0757: частичный метод может не содержать нескольких объявлений реализации.
- CS0759: не найдено определение объявления для реализации частичного метода.
-
CS0761: объявления частичных
method<T>методов имеют несогласованные ограничения параметров типа. - CS0762: невозможно создать делегат из метода, так как это частичный метод без объявления реализации
-
CS0763: оба объявления частичных методов должны быть
staticили не могут бытьstatic. -
CS0764: оба объявления частичных методов должны быть или не могут быть
unsafeunsafe - CS1067: частичные объявления должны иметь одинаковые имена параметров типа и модификаторы дисперсии в том же порядке.
- CS8142: оба частичных объявления элементов должны использовать одинаковые имена элементов кортежа.
- CS8663: оба частичных объявления членов должны быть прочитаны, или ни то, ни другое не может быть прочитано.
- CS8796: частичный метод должен иметь модификаторы специальных возможностей, так как он имеет тип возвращаемого значения, непустый.
- CS8795: частичный член должен иметь часть реализации, так как она имеет модификаторы специальных возможностей.
-
CS8797: частичный метод должен иметь модификаторы специальных возможностей, так как он имеет параметры "
out". -
CS8798: частичный метод должен иметь модификаторы специальных возможностей, так как он имеет
virtualмодификатор ",", "override",sealed"new" или "extern". - CS8799: оба частичных объявления членов должны иметь одинаковые модификаторы специальных возможностей.
-
CS8800: оба частичных объявления элементов должны иметь одинаковые сочетания
virtual,overrideиsealednewмодификаторы. - CS8817: оба объявления частичных методов должны иметь одинаковый тип возвращаемого значения.
-
CS8818: частичные объявления членов должны иметь соответствующие возвращаемые
refзначения. - CS8863: только одно частичное объявление типа может иметь список параметров
-
CS8988:
scopedмодификатор параметра не соответствует частичному определению. - CS9248: частичное свойство должно иметь часть реализации.
- CS9249: частичное свойство должно иметь часть определения.
- CS9250: частичное свойство может не содержать нескольких определяемых объявлений и не может быть автоматическим свойством.
- CS9251: частичное свойство может не иметь нескольких объявлений реализации
- CS9252: необходимо реализовать метод доступа к свойствам, так как он объявлен в части определения
- CS9253: метод доступа к свойствам не реализует ни одного метода доступа, объявленного в части определения.
- CS9254: метод доступа к свойствам должен соответствовать части определения
- CS9255: оба объявления частичных свойств должны иметь одинаковый тип.
- CS9256: объявления частичных свойств имеют различия в сигнатуре.
- CS9257: оба объявления частичных свойств должны быть обязательными или не требуются.
- CS9275: частичный член должен иметь часть реализации.
- CS9276: частичный член должен иметь часть определения.
- CS9277: Частичный член не может иметь несколько определяющих объявлений.
- CS9278: частичному члену не разрешено иметь несколько объявлений реализации.
- CS9279: частичное событие не может иметь инициализатор.
- CS9280: только объявление реализации частичного конструктора может иметь инициализатор.
В следующих разделах объясняется причина и исправление этих ошибок и предупреждений.
Разделяемые типы
- CS0260: отсутствует частичный модификатор для объявления типа; другое частичное объявление этого типа существует
- CS0261: частичные объявления типов должны быть либо всеми классами, либо всеми структурами, либо всеми интерфейсами.
- CS0262: частичные объявления типа имеют конфликтующие модификаторы доступа
- CS0263: частичные объявления типа не должны указывать разные базовые классы
- CS0264: частичные объявления типа должны иметь одинаковые имена параметров типа в том же порядке.
- CS0265: частичные объявления типа имеют несогласованные ограничения для параметра типа "type parameter"
-
CS0267: Модификатор '
partial' может появляться только непосредственно перед 'class', 'record', 'struct', 'interface', или перед возвращаемым типом метода или свойства. - CS8863: только одно частичное объявление типа может иметь список параметров
Объявление частичного типа может привести к тому, что компилятор выдает следующее предупреждение:
-
CS0282: Между полями в нескольких объявлениях частичного
classилиstructтипа не задан порядок. Чтобы указать порядок, все экземплярные поля должны находиться в одном объявлении.
Эти ошибки возникают, когда объявления частичного типа нарушают правила для частичных типов.
-
partialДобавьте модификатор ко всем объявлениям типа, так как после разделения типа по нескольким объявлениям каждая часть должна включать ключевое слово (CS0260). - Убедитесь, что все объявления используют одно и то же ключевое слово типа, так как сочетание
class,struct,record, иinterfaceв разных частях одного типа не допускается (CS0261). Необходимо обеспечить согласованность модификаторов доступа во всех объявлениях, например, чтобы все части былиpublicили все части былиinternal, так как конфликтующая доступность для разных объявлений создаёт неоднозначность относительно предполагаемой видимости типа (CS0262). - Убедитесь, что все объявления указывают один базовый класс, так как тип может наследоваться только от одного базового класса, поэтому конфликт нескольких разных базовых классов (CS0263).
- Для универсальных частичных типов убедитесь, что все объявления перечисляют одинаковые параметры типа в одном порядке, так как имена параметров типа должны совпадать точно во всех частях (CS0264).
- Убедитесь, что ограничения параметров типа остаются согласованными во всех объявлениях, так как несогласованные ограничения создают неоднозначность о том, какие типы можно использовать для параметров типа (CS0265).
- Поместите ключевое
partialслово непосредственно перед ключевым словом типа (class, илиrecordstructinterface), так как синтаксис языка требует конкретного упорядочения (CS0267). - Объявите первичный конструктор только в одном частичном объявлении, поскольку несколько первичных конструкторов создадут конфликт относительно использования параметров конструктора и логики инициализации (CS8863).
При объявлении полей в нескольких файлах для частичного структурного типа следует объединить все объявления полей в один файл, если порядок расположения в памяти имеет значение, так как компилятор не может гарантировать определённый порядок при разбиении полей по нескольким файлам (CS0282). Кроме того, если порядок расположения не имеет значения, можно применить значение System.Runtime.InteropServices.StructLayoutAttribute с LayoutKind.Auto, чтобы среда выполнения автоматически оптимизировала расположение.
Частичные члены
-
CS0750: частичный член не может иметь модификатор "
abstract". -
CS0751: частичный элемент должен быть объявлен в частичном
classили частичномstruct - CS0754: частичный член может явно не реализовать метод интерфейса.
-
CS0763: оба объявления частичных методов должны быть
staticили не могут бытьstatic. -
CS0764: оба объявления частичных методов должны быть или не могут быть
unsafeunsafe - CS8142: оба частичных объявления элементов должны использовать одинаковые имена элементов кортежа.
- CS8663: оба частичных объявления членов должны быть прочитаны, или ни то, ни другое не может быть прочитано.
- CS8799: оба частичных объявления членов должны иметь одинаковые модификаторы специальных возможностей.
-
CS8800: оба частичных объявления элементов должны иметь одинаковые сочетания
virtual,overrideиsealednewмодификаторы. -
CS8818: частичные объявления членов должны иметь соответствующие возвращаемые
refзначения. -
CS8988:
scopedмодификатор параметра не соответствует частичному определению. - CS9275: частичный член должен иметь часть реализации.
- CS9276: частичный член должен иметь часть определения.
- CS9277: частичный член не может иметь несколько определяющих деклараций.
- CS9278: Частичный член не допускается иметь несколько объявлений реализации.
Эти ошибки возникают, когда правила частичных методов, свойств, индексаторов и событий нарушаются частичными объявлениями членов.
-
abstractУдалите модификатор из частичных элементов, так как абстрактные члены требуют производных классов для предоставления реализаций. Это требование конфликтует с шаблоном частичного типа, где реализация предоставляется в реализующем объявлении (CS0750). - Объявите частичные члены в типе, включающем модификатор
partial, так как частичные члены могут существовать только в частичных типах (CS0751). - Удалите явные реализации интерфейса из частичных элементов, так как шаблон объявления двух частей несовместим с явным синтаксисом реализации интерфейса (CS0754).
- Включите или опустите
staticмодификатор последовательно в обоих объявлениях, так как сочетание статических и элементов экземпляра приведет к неоднозначности вызова члена (CS0763). - Включите или опустите
unsafeмодификатор последовательно в обоих объявлениях, так как несогласованные небезопасные контексты могут создавать проблемы безопасности или ошибки компиляции (CS0764). - Используйте идентичные имена элементов кортежей в обоих объявлениях, так как разные имена создают путаницу в используемом коде о том, какие имена доступны (CS8142).
- Включите или исключите модификатор
readonlyодинаково в обоих объявлениях, так как сочетание объявлений readonly и не-readonly создает неоднозначность относительно того, может ли член изменить состояние экземпляра (CS8663). - Используйте идентичные модификаторы доступа (например,
public,private, илиprotected) в обоих объявлениях, так как различные уровни доступа будут конфликтовать с видимостью члена (CS8799). - Примените одно и то же сочетание
virtual,overridesealedиnewмодификаторов к обоим объявлениям, так как эти модификаторы управляют наследованием и полиморфизмом поведения, которое должно быть согласовано (CS8800). - Используйте соответствующие модификаторы возврата значений в обоих объявлениях, так как несогласованное поведение возврата по ссылке приведет к проблемам безопасности типов (CS8818).
-
scopedПоследовательно применяйте модификатор к параметрам в обоих объявлениях, так как этот модификатор управляет временем существования параметров типа ref и должен соответствовать для обеспечения безопасности памяти (CS8988). - Предоставьте объявление реализации для каждого частичного элемента с определяющим объявлением, так как частичные члены требуют завершения обеих частей (CS9275, CS9276).
- Убедитесь, что каждый частичный член имеет ровно одно определяющее объявление и одно реализующее объявление, так как несколько объявлений создают неоднозначность относительно того, какое определение или реализацию использовать (CS9277, CS9278).
Разделяемые методы
-
CS0501: "функция-член" должна объявить текст, так как он не помечен
abstract,externилиpartial - CS0755: оба объявления частичных методов должны быть методами расширения или ни в чем не могут быть методом расширения.
- CS0756: частичный метод может не содержать несколько определяющих объявлений.
- CS0757: частичный метод может не содержать нескольких объявлений реализации.
- CS0759: не найдено определение объявления для реализации частичного метода.
-
CS0761: объявления частичных
method<T>методов имеют несогласованные ограничения параметров типа. - CS0762: невозможно создать делегат из метода, так как это частичный метод без объявления реализации
- CS1067: частичные объявления должны иметь одинаковые имена параметров типа и модификаторы дисперсии в том же порядке.
- CS8796: частичный метод должен иметь модификаторы специальных возможностей, так как он имеет тип возвращаемого значения, непустый.
- CS8795: частичный член должен иметь часть реализации, так как она имеет модификаторы специальных возможностей.
-
CS8797: частичный метод должен иметь модификаторы специальных возможностей, так как он имеет параметры "
out". -
CS8798: частичный метод должен иметь модификаторы специальных возможностей, так как он имеет
virtualмодификатор ",", "override",sealed"new" или "extern". - CS8817: оба объявления частичных методов должны иметь одинаковый тип возвращаемого значения.
Эти ошибки возникают, когда объявления частичных методов нарушают правила для частичных методов.
- Добавьте модификатор
partialк объявлению метода или предоставьте тело метода, поскольку методы без реализации должны быть обозначены какabstract,externилиpartial(CS0501). - Убедитесь, что оба объявления включают или исключают синтаксис использования метода расширения (
thisмодификатор на первом параметре) и делают это согласованно, так как сочетание расширенных и нерасширенных деклараций создает несовместимые сигнатуры методов (CS0755). - Удалите повторяющиеся определяющие объявления (объявления без тел методов), так как каждый частичный метод может иметь только одно определение (CS0756).
- Удалите повторяющиеся объявления реализации (объявления с телами методов), так как каждый частичный метод может иметь только одну реализацию (CS0757).
- Добавьте соответствующее определение объявления для каждого реализующего объявления, так как каждый частичный метод с текстом должен иметь соответствующее объявление сигнатуры без текста (CS0759).
- Убедитесь, что ограничения параметров типа соответствуют обоим объявлениям, так как несогласованные ограничения создают неоднозначность о том, какие типы допустимы для универсального метода (CS0761).
- Предоставьте определение реализации перед созданием делегата из метода, так как делегаты требуют конкретной реализации метода для ссылки (CS0762).
- Для универсальных частичных методов убедитесь, что оба объявления используют одинаковые имена параметров типа и модификаторы дисперсий в одном порядке, так как несовпаденные универсальные подписи создают несовместимые объявления методов (CS1067).
- Добавьте явные модификаторы доступности (такие как
public,private,protectedилиinternal) при возврате методом типа, не равногоvoid, потому что частичные методы без void должны иметь определенные уровни доступности для вызова из другого кода (CS8796). - Предоставьте объявление реализации при указании модификаторов доступа, так как доступные частичные методы должны иметь реализации, чтобы быть вызванными (CS8795).
- Добавьте явные модификаторы специальных возможностей, если метод имеет
outпараметры, так как методы с параметрами out должны иметь определенные специальные возможности для вызова (CS8797). - Добавьте явные модификаторы доступа при использовании
virtual,override,sealed,newилиexternмодификаторов, так как эти модификаторы влияют на видимость методов и требуют явного указания доступа (CS8798). - Убедитесь, что оба объявления указывают один и тот же тип возвращаемого значения, так как разные типы возврата создают несовместимые сигнатуры методов (CS8817).
Частичные свойства
- CS9248: частичное свойство должно иметь часть реализации.
- CS9249: частичное свойство должно иметь часть определения.
- CS9250: частичное свойство может не содержать нескольких определяемых объявлений и не может быть автоматическим свойством.
- CS9251: частичное свойство может не иметь нескольких объявлений реализации
- CS9252: необходимо реализовать метод доступа к свойствам, так как он объявлен в части определения
- CS9253: метод доступа к свойствам не реализует ни одного метода доступа, объявленного в части определения.
- CS9254: метод доступа к свойствам должен соответствовать части определения
- CS9255: оба объявления частичных свойств должны иметь одинаковый тип.
- CS9257: оба объявления частичных свойств должны быть обязательными или не требуются.
Частичное свойство или объявление индексатора может привести к тому, что компилятор выдает следующее предупреждение:
- CS9256: объявления частичных свойств имеют различия в сигнатуре.
Эти ошибки и предупреждения возникают, когда объявления частичного свойства или индексатора нарушают правила для частичных свойств.
- Предоставьте декларацию реализации для каждого объявления частичного свойства, так как частичные свойства требуют полного завершения обеих частей (CS9248).
- Предоставьте определение для каждого частичного объявления реализации свойства, так как каждая реализация должна иметь соответствующее определение (CS9249).
- Удалите повторяющиеся объявления определения и избегайте использования синтаксиса автоматического свойства в объявлении реализующего, так как каждое частичное свойство может иметь только одно определение, и реализация должна включать явные тела аксессоров (CS9250).
- Удалите повторяющиеся объявления реализации, так как каждое частичное свойство может иметь только одну реализацию (CS9251).
- Реализуйте все методы доступа, объявленные в определяемом объявлении, так как реализация должна предоставлять тела для каждого метода доступа (get, set или init), указанного в определении (CS9252).
- Удалите методы доступа из реализующего объявления, которые не были объявлены в определении объявления, так как можно реализовать только методы доступа, объявленные в части определения (CS9253).
- Убедитесь, что подписи метода доступа соответствуют обоим объявлениям, включая тип метода доступа (get, set или init) и любые модификаторы, так как несогласованные определения доступа создают несовместимые объявления свойств (CS9254).
- Убедитесь, что оба объявления указывают один и тот же тип свойства, так как разные типы создают несовместимые подписи свойств (CS9255).
- Убедитесь, что оба объявления последовательно включают или исключают
requiredмодификатор, поскольку смешение обязательных и необязательных объявлений создает неясность относительно того, необходимо ли инициализировать свойство (CS9257). - Проверьте и исправьте несоответствия сигнатур между объявляющими и реализующими декларациями, так как различия в модификаторах доступа, возвращаемых типах или списках параметров (для индексаторов) могут привести к непредвиденному поведению (CS9256).
Частичные события и конструкторы
- CS9279: частичное событие не может иметь инициализатор.
- CS9280: только объявление реализации частичного конструктора может иметь инициализатор.
Вы объявили инициализатор в определяющем объявлении частичного конструктора или в объявлении частичного события. Удалите инициализатор.