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

4.2.1Типы классов

Тип класса определяет структуру данных, которая содержит данные-члены (константы и поля), функции-члены (методы, свойства, события, индексаторы, операторы, конструкторы экземпляров, деструкторы и статические конструкторы), а также вложенные типы. Типы классов поддерживают механизм наследования, который позволяет создавать производные классы, расширяющие функциональные возможности базового класса. Экземпляры типов классов создаются с помощью выражений_создания_объекта (§7.6.10.1).

Дополнительные сведения о типах классов см. в разделе §10.

В языке C# некоторые предопределенные типы классов имеют особое значение (см. таблицу ниже).

Тип класса

Описание

System.Object

Первичный базовый класс для всех типов. См. §4.2.2.

System.String

Строковый тип языка C#. См. §4.2.4.

System.ValueType

Базовый класс для всех типов значений. См. §4.1.1.

System.Enum

Базовый класс для всех перечисляемых типов. См. §14.

System.Array

Базовый класс для всех типов массивов. См. §12.

System.Delegate

Базовый класс для всех типов делегатов. См. §15.

System.Exception

Базовый класс для всех типов исключений. См. §16.

4.2.2Тип объекта

Тип класса object является первичным базовым классом для всех типов. В C# все типы прямо или косвенно наследуются от типа класса object.

Ключевое слово object представляет собой псевдоним предопределенного класса System.Object.

4.2.3Динамический тип

Динамический тип, как и тип object, может ссылаться на любой объект. Если операторы применяются к выражениям типа dynamic, их разрешение откладывается на время выполнения программы. Таким образом, если оператор не может быть легально применен к ссылочному объекту, во время компиляции ошибок не возникает. Вместо этого вызывается исключение при сбое разрешения оператора во время выполнения программы.

Более подробно динамический тип описывается в §4.7, а динамическая привязка в §7.2.2.

4.2.4Строковый тип

Тип string представляет собой запечатанный тип класса, наследуемый непосредственно от класса object. Экземпляры класса string представляют собой строки, состоящие из символов Юникода.

Значения типа string могут быть записаны в виде строковых литералов (§2.4.4.5).

Ключевое слово string представляет собой псевдоним предопределенного класса System.String.

4.2.5Типы интерфейсов

В интерфейсе определяется контракт. Класс или структура, в которых реализуется этот интерфейс, должны соблюдать условия данного контракта. Интерфейс может наследоваться от нескольких базовых интерфейсов. Класс или структура могут реализовывать несколько интерфейсов.

Дополнительные сведения о типах интерфейса см. в разделе §13.

4.2.6Типы массивов

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

Дополнительные сведения о типах массивов см. в разделе §12.

4.2.7Типы делегатов

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

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

Дополнительные сведения о типах делегатов см. в разделе §15.

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