Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

10.1.6Тело класса

Тело_класса для класса определяет члены этого класса.

тело_класса: { объявления_члена_классанеобязательно }

10.2Разделяемые типы

Объявление типа может быть разделено на несколько объявлений разделяемого типа. Объявление типа формируется из его частей в соответствии с правилами данного раздела, после чего оно считается единым объявлением на протяжении оставшегося времени компилирования и выполнения программы.

Объявление класса, структуры или интерфейса представляет объявление разделяемого типа, если оно включает модификатор partial. Модификатор partial не является ключевым словом и действует в качестве модификатора, только если он расположен непосредственно перед одним из ключевых слов class, struct или interface в объявлении типа или перед типом void в объявлении метода. В других контекстах его можно использовать в качестве обычного идентификатора.

Каждая часть объявления разделяемого типа должна содержать модификатор partial. Он должен иметь такое же имя и должен быть объявлен в том же объявлении пространства имен или типа, что и другие части. Модификатор partial указывает, что могут существовать дополнительные части объявления типа, но их существование не является обязательным; тип с одним объявлением может содержать модификатор partial.

Все части разделяемого типа должны быть скомпилированы вместе, чтобы они могли быть объединены во время компилирования в одно объявление типа. Разделяемые типы специально не допускают расширение уже скомпилированных типов.

Вложенные типы могут быть объявлены в нескольких частях путем использования модификатора partial. Обычно тип-контейнер объявляется также посредством partial, а каждая часть вложенного типа объявляется в другой части типа-контейнера.

Модификатор partial не допускается в объявлениях делегата или перечисляемого типа.

10.2.1Атрибуты

Атрибуты разделяемого типа определяются путем комбинирования в неопределенном порядке атрибутов каждой части. Если атрибут размещен в нескольких частях, он эквивалентен многократному указанию атрибута для типа. Например, две части:

[Attr1, Attr2("hello")] partial class A {}

[Attr3, Attr2("goodbye")] partial class A {}

эквиваленты такому объявлению:

[Attr1, Attr2("hello"), Attr3, Attr2("goodbye")] class A {}

Атрибуты параметров типа комбинируются аналогичным образом.

10.2.2Модификаторы

Если объявление разделяемого типа включает спецификацию доступности (модификаторы public, protected, internal и private), оно должно быть согласовано со всеми другими частями, включающими спецификацию доступности. Если ни одна из частей разделяемого типа не содержит спецификацию доступности, типу задается соответствующая доступность по умолчанию (§3.5.1).

Если одно или несколько разделяемых объявлений вложенного типа включают модификатор new, и если вложенный тип скрывает унаследованный член (§3.7.1.2), предупреждение не дается.

Если одно или несколько разделяемых объявлений класса включают модификатор abstract, класс считается абстрактным (§10.1.1.1). В противном случае класс считается неабстрактным.

Если одно или несколько разделяемых объявлений класса включают модификатор sealed, класс считается запечатанным (§10.1.1.2). В противном случае класс считается незапечатанным.

Обратите внимание, что класс не может быть одновременно абстрактным и запечатанным.

При использовании модификатора unsafe в объявлении разделяемого типа только соответствующая часть считается небезопасным контекстом (§18.1).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]