class- modifier | constant-modifier: | field-modifier: | method-modifier | property-modifier | accessor-modifier: | event-modifier: | indexer-modifier: | operator-modifier |
new public protected internal private abstract sealed static | new public protected internal private | new public protected internal private static readonly volatile | new public protected internal private static virtual sealed override abstract extern | new public protected internal private static virtual sealed override abstract extern | protected internal private protected internal internal protected | new public protected internal private static virtual sealed override abstract extern | new public protected internal private virtual sealed override abstract extern | public static extern |
модификатор volatile используется для поля, обращение к которому выполняется через несколько потоков
instance constructor-modifier: | static-constructor-modifiers: |
public protected internal private extern | externopt static static externopt |
Члены класса.
Члены типа класса разделены на следующие категории (спецификация)
· Константы, представляющие постоянные значения, связанные с классом.
· Поля, являющиеся переменными класса.
· Методы, реализующие вычисления и действия, которые могут быть выполнены классом.
· Свойства, определяющие именованные характеристики и действия, связанные с чтением и записью данных характеристик.
· События, определяющие уведомления, которые могут быть сгенерированы классом.
· Индексаторы, которые обеспечивают индексацию экземпляров класса аналогично (синтаксически) индексации массивов.
· Операторы, определяющие операторы выражений, которые могут быть применены к экземплярам класса.
· Конструкторы экземпляров, реализующие действия, требуемые для инициализации экземпляров класса.
· Деструкторы, реализующие действия, выполняемые до отмены экземпляров класса без возможности восстановления.
· Статические конструкторы, реализующие действия, требуемые для инициализации самого класса.
· Типы, представляющие локальные типы класса.
Все члены, которые могут содержать исполняемый код, считаются членами функций типа класса. Членами функций типа класса являются методы, свойства, события, индексаторы, операторы, конструкторы экземпляров, деструкторы и статические конструкторы данного типа класса.
Конструкторы экземпляров, деструкторы и статические конструкторы должны иметь одинаковые имена с именами непосредственного заключающего класса. Все другие члены должны иметь имена, отличающиеся от имен непосредственного заключающего класса.
Сигнатура конструктора экземпляра должна отличаться от сигнатур всех других конструкторов экземпляров, объявленных в том же классе, а два конструктора экземпляра, объявленных в одном классе, не могут иметь сигнатуры, отличающиеся только словами ref и out.
Члены класса являются либо статическими членами, либо членами экземпляра. В общем случае считается, что статические члены принадлежат к типам классов, а члены экземпляра принадлежат к объектам (экземплярам типов классов).
Каждый экземпляр класса содержит отдельный набор всех полей экземпляра класса.
Член функции экземпляра (метод, свойство, индексатор, конструктор экземпляра или деструктор) работает на заданном экземпляре класса, и данный экземпляр может быть вызван в качестве this.\
Класс может содержать объявления следующих членов:
class-member: | Члены класса | declaration |
constant | Константа | attributesopt constant-modifiersopt const type constant-declarators ; |
field | Поле static and instance fields | attributesopt field-modifiersopt type variable-declarators ; атрибутынеоб модификаторы_полянеоб тип деклараторы_переменных ; |
method | Метод | method-header: attributesopt method-modifiersopt partialo pt return-type member-name type-parameter-listopt ( formal-parameter-listopt ) type-parameter-constraints-clausesopt public static void OpTest<T>(T s, T t) |
property | Свойство | property-declaration: attributesopt property-modifiersopt type member-name { accessor-declarations } get-accessor-declaration: attributesopt accessor-modifieropt get accessor-body set-accessor-declaration: attributesopt accessor-modifieropt set accessor-body |
event | Событие | attributesopt event-modifiersopt event type variable-declarators ; public event EventHandler Click; |
indexer | Индексатор | indexer-declaration: attributesopt indexer-modifiersopt indexer-declarator { accessor-declarations } indexer-declarator: type this [ formal-parameter-list ] type interface-type . this [ formal-parameter-list ] |
operator | Операторы | attributesopt operator-modifiers operator-declarator operator-body |
constructor | Конструктор экземпляра | attributesopt constructor-modifiersopt constructor-declarator constructor-body |
destructor | деструктор | attributesopt externopt ~ identifier ( ) destructor-body |
static-constructor | Конструктор типа | static-constructor-declaration: attributesopt static-constructor-modifiers identifier ( ) static-constructor-body |
type | типы |
Конструкторы экземпляров .
Конструктор экземпляра является членом, реализующим действия, необходимые для инициализации экземпляра класса. Конструкторы экземпляров объявляются с помощью объявлений конструкторов:
constructor-declaration:
attributesopt constructor-modifiersopt constructor-declarator constructor-body
объявление_конструктора:
атрибутынеобязательно модификаторы_конструкторанеобязательно декларатор_конструктора тело_конструктора
модификатор_конструктора:
public
protected
internal
private
extern
декларатор_конструктора:
идентификатор ( список_формальных_параметровнеобязательно ) инициализатор_конструкторанеобязательно
инициализатор_конструктора:
: base ( список_аргументовнеобязательно )
: this ( список_аргументовнеобязательно )
тело_конструктора:
блок
;
Идентификатор в деклараторе конструктора должен указывать имя класса, в котором объявлен конструктор экземпляров.
Необязательный список формальных параметров конструктора экземпляров подчиняется тем же правилам, что и список формальных параметров метода. Список формальных параметров определяет подпись конструктора экземпляров и управляет процессом, посредством которого разрешение перегрузки выбирает отдельный конструктор экземпляров в вызове.
Каждый тип, на который есть ссылка в списке формальных параметров конструктора экземпляров, должен быть, по крайней мере, так же доступным, как сам конструктор.
Необязательный инициализатор конструктора указывает другой конструктор экземпляров для вызова перед выполнением операторов, заданных в теле конструктора этого конструктора экземпляров.
Конструкторы экземпляров не наследуются.
Если класс не содержит объявления конструкторов экземпляров, автоматически предоставляется конструктор экземпляров по умолчанию.
Дата: 2019-03-05, просмотров: 200.