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

модуль_компиляции: директивы_внешнего_псевдониманеобязательно директивы_usingнеобязательно глобальные_атрибутынеобязательно объявления_элементов_пространства_именнеобязательно

объявление_пространства_имен: namespace проверенный_идентификатор тело_пространства_имен ;необязательно

проверенный_идентификатор: идентификатор проверенный_идентификатор . идентификатор

тело_пространства_имен: { директивы_внешних_псевдонимовнеобязательно директивы_usingнеобязательно объявления_элементов_пространства_именнеобязательно }

директивы_внешних_псевдонимов: директива_внешнего_псевдонима директивы_внешних_псевдонимов директива_внешнего_псевдонима

директива_внешнего_псевдонима: extern alias идентификатор ;

директивы_using: директива_using директивы_using директива_using

директива_using: директива_using_для_псевдонима директива_using_для_пространства_имен

директива_using_для_пространства_имен: using идентификатор = имя_пространства_имен_или_типа ;

директива_using_для_пространства_имен: using имя_пространства_имен ;

объявления_элементов_пространства_имен: объявление_элементов_пространства_имен объявления_элементов_пространства_имен объявление_элемента_пространства_имен

объявление_элемента_пространства_имен: обяъвление_пространства_имен объявление_типа

объявление_типа: объявление_класса объявление_структуры объявление_интерфейса объявление_перечисления обяъвление_делегата

проверенный_псевдоним_элемента: идентификатор :: идентификатор список_аргументов_типанеобязательно

      1. Классы

объявление_класса: атрибутынеобязательно модификаторы_классанеобязательно partialнеобязательно class идентификатор список_параметров_типанеобязательно база_классанеобязательно предложения_ограничений_параметров_типанеобязательно тело_класса ;необязательно

модификаторы_класса: модификатор_класса модификатор_класса модификаторы_класса

модификатор_класса: new public protected internal private abstract sealed static

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

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

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

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

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

предложения_ограничений_параметров_типа: предложение_ограничений_параметров_типа предложения_ограничений_параметров_типа предложение_ограничений_параметров_типа

предложение_ограничений_параметров_типа: where параметр_типа : ограничения_параметров_типа

ограничения_параметров_типа: первичное_ограничение вторичные_ограничения ограничение_для_конструктора первичное_ограничение , вторичные_ограничения первичное_ограничение , ограничение_для_конструктора вторичные_ограничения , ограничение_для_конструктора первичное_ограничение , вторичные_ограничения , ограничение_для_конструктора

первичное_ограничение: тип_класса class struct

вторичные_ограничения: тип_интерфейса параметр_типа вторичные_ограничения , тип_интерфейса вторичные_ограничения , параметр_типа

ограничение_для_конструктора: new ( )

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

объявления_элементов_класса: объявление_элемента_класса объявления_элементов_класса объявление_элемента_класса

объявление_элемента_класса: объявление_константы объявление_поля объявление_метода объявление_свойства объявление_события объявление_индекса объявление_оператора объявление_конструктора объявление_деструктора объявление_статического_конструктора объявление_типа

объявление_константы: атрибутынеобязательно модификаторы_константынеобязательно const тип деклараторы_константы ;

модификаторы_константы: модификатор_константы модификаторы_константы модификатор_константы

модификатор_константы: new public protected internal private

деклараторы_констант: декларатор_константы деклараторы_констант , декларатор_константы

объявление_константы: идентификатор = выражение_константы

объявление_поля: атрибутынеобязательно модификаторы_полянеобязательно тип деклараторы_переменных ;

модификаторы_поля: модификатор_поля модификаторы_поля модификатор_поля

модификатор_поля: new public protected internal private static readonly volatile

деклараторы_переменных: декларатор_переменной деклараторы_переменных , декларатор_переменной

декларатор_переменной: идентификатор идентификатор = инициализатор_переменной

инициализатор_переменной: выражение инициализатор_массива

объявление_метода: заголовок_метода тело_метода

заголовок_метода: атрибутынеобязательно модификаторы_методанеобязательно partialнеобязательно тип_возвращаемого_значения имя_элемента список_параметров_типанеобязательно ( список_формальных_параметровнеобязательно ) предложения_ограничений_параметров_типанеобязательно

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

модификатор_метода: new public protected internal private static virtual sealed override abstract extern

тип_возвращаемого_значения: тип void

имя_элемента: идентификатор тип_интерфейса . идентификатор

тело_метода: блок ;

список_формальных_параметров: фиксированные_параметры фиксированные_параметры , массив_параметров массив_параметров

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

фиксированный_параметр: атрибутынеобязательно модификатор_параметранеобязательно тип идентификатор аргумент_по_умолчаниюнеобязательно

аргумент_по_умолчанию: = выражение

модификатор_параметра: ref out this

массив_параметров: атрибутынеобязательно params тип_массива идентификатор

объявление_свойства: атрибутынеобязательно модификаторы_свойстванеобязательно тип имя_элемента { объявления_методов_доступа }

модификаторы_свойства: модификатор_свойства модификаторы_свойства модификатор_свойства

модификатор_свойства: new public protected internal private static virtual sealed override abstract extern

имя_элемента: идентификатор тип_интерфейса . идентификатор

объявления_методов_доступа: объявление_метода_доступа_get объявление_метода_доступа_setнеобязательно объявление_метода_доступа_set объявление_метода_доступа_getнеобязательно

объявление_метода_доступа_get: атрибутынеобязательно модификатор_метода_доступанеобязательно get тело_метода_доступа

объявление_метода_доступа_set: атрибутынеобязательно модификатор_метода_доступанеобязательно set тело_метода_доступа

модификатор_метода_доступа: protected internal private protected internal internal protected

тело_метода_доступа: блок ;

объявление_события: атрибутынеобязательно модификаторы_событиянеобязательно event тип деклараторы_переменных ; атрибутынеобязательно модификаторы_событиянеобязательно event тип имя_элемента { объявления_методов_доступа_для_событий }

модификаторы_события: модификатор_события модификаторы_события модификатор_события

модификатор_события: new public protected internal private static virtual sealed override abstract extern

объявления_методов_доступа_для_событий: объявление_метода_доступа_add объявление_метода_доступа_remove объявление_метода_доступа_remove объявление_метода_доступа_add

объявление_метода_доступа_add: атрибутынеобязательно add блок

объявление_метода_доступа_remove: атрибутынеобязательно remove блок

объявление_индекса: атрибутынеобязательно модификаторы_индексанеобязательно декларатор_индекса { объявления_методов_доступа }

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

модификатор_индекса: new public protected internal private virtual sealed override abstract extern

декларатор_индексатора: тип this [ список_формальных_параметров ] тип тип_интерфейса . this [ список_формальных_параметров ]

объявление_оператора: атрибутынеобязательно модификаторы_оператора декларатор_оператора тело_оператора

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

модификатор_оператора: public static extern

декларатор_оператора: декларатор_унарного_оператора декларатор_двоичного_оператора декларатор_оператора_преобразования

декларатор_унарного_оператора: тип operator перегружаемый_унарный_оператор ( тип идентификатор )

перегружаемый_унарный_оператор: один из следующих + - ! ~ ++ -- true false

декларатор_двоичного_оператора: тип operator перегружаемый_двоичный_оператор ( тип идентификатор , тип идентификатор )

перегружаемый_двоичный_оператор: + - * / % & | ^ << shift_cправа == != > < >= <=

декларатор_оператора_преобразования: implicit operator тип ( тип идентификатор ) explicit operator тип ( тип идентификатор )

тело_оператора: блок ;

объявление_конструктора: атрибутынеобязательно модификаторы_конструктора декларатор_конструктора тело_конструктора

модификаторы_конструктора: модификатор_конструктора модификаторы_конструктора модификатор_конструктора

модификатор_конструктора: public protected internal private extern

декларатор_конструктора: идентификатор ( список_формальных_параметровнеобязательно ) инициализатор_конструкторанеобязательно

инициализатор_конструктора: : base ( список_аргументовнеобязательно ) : this ( список_аргументовнеобязательно )

тело_конструктора: блок ;

объявление_статического_конструктора: атрибутынеобязательно модификаторы_статического_конструктора идентификатор ( ) тело_статического_конструктора

модификаторы_статического_конструктора: externнеобязательно static static externнеобязательно

тело_статического_конструктора: блок ;

объявление_деструктора: атрибутынеобязательно externнеобязательно ~ идентификатор ( ) тело_деструктора

тело_деструктора: блок ;

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