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

10.1.1.3.1Ссылки на типы статического класса

Ссылка имени_пространства_имен_или_типа на статический класс (§3.8) допускается в следующих случаях.

  • Имя_пространства_имен_или_типа T в имени_пространства_имен_или_типа формы T.I или

  • Имя_пространства_имен_или_типа T в выражении_typeof (§7.5.11) формы typeof(T).

Ссылка первичного_выражения на статический класс (§7.5) допускается в следующих случаях.

  • Первичное_выражение = E в доступе_к_членам (§7.5.4) формы E.I.

В любом другом контексте ссылка на статический класс является ошибкой времени компилирования. Например, использование статического класса в качестве базового класса, составного типа (§10.3.8) члена, аргумента универсального типа или ограничения параметра типа является ошибкой. Аналогичным образом статический класс не может использоваться в типе массива, типе указателя, выражении new, выражении приведения, выражении is, выражении as, выражении sizeof или в выражении значения по умолчанию.

10.1.2Модификатор partial

Модификатор partial используется для указания того, что данное объявление_класса является объявлением разделяемого типа. Несколько объявлений разделяемого типа с одинаковым именем в рамках заключающего объявления пространства имен или типа формируют объявление одного типа, согласно правилам в разделе §10.2.

Распределение объявления класса в отдельных сегментах текста программы может быть полезным при создании и поддержке этих сегментов в различных контекстах. Например, одна часть объявления класса может быть создана системой, а другая часть – создана вручную. Текстовое разделение двух частей позволяет предотвратить конфликт обновлений разных частей.

10.1.3Параметры типа

Параметром типа является простой идентификатор, обозначающий заполнитель для аргумента типа, предоставленного для создания сформированного типа. Параметром типа является формальный заполнитель для типа, предоставляемого позже. И наоборот, аргументом типа (§4.4.1) является фактический тип, заменяемый для параметра типа при создании сформированного типа.

список_параметров_типа: < параметры_типа >

параметры_типа: атрибутынеобязательно параметр_типа параметры_типа , атрибутынеобязательно параметр_типа

параметр_типа: идентификатор

Каждый параметр типа в объявлении класса определяет имя в области объявления (§3.3) данного класса. Поэтому невозможно задать аналогичное имя для другого параметра типа или члена, объявленного в данном классе. Параметр типа не может иметь одинаковое с самим типом имя.

10.1.4Спецификация базы класса

Объявление класса может содержать спецификацию базы_класса, определяющую прямой базовый класс для класса и интерфейсов (§13), непосредственно реализованных классом.

база_класса: : тип_класса : список_типов_интерфейсов : тип_класса , список_типов_интерфейсов

список_типов_интерфейсов: тип_интерфейса список_типов_интерфейсов , тип_интерфейса

Базовый класс, указанный в объявлении класса, может являться типом сформированного класса (§4.4). Базовый класс не может быть параметром типа сам по себе, хотя он может вовлекать параметры типа в области.

class Extend<V>: V {} // Error, type parameter used as base class

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