Система типов языка C# — вещь достаточно сложная и требующая аккуратного рассмотрения при первом знакомстве. Общие отношения между типами иллюстрирует иерархическая схема, приведенная на рис. 2.1. Как уже упоминалось и как показано на схеме, все типы языка C# имеют общий базовый тип — класс object. О делении типов на типы ссылок и типы значений мы уже рассказывали. А вот с дальнейшей детализацией будем знакомиться постепенно. И знакомство начнем не с классификации, соответствующей иерархии типов, а с другого деления.
Все типы, которые могут использоваться в программах на С#, делятся на три группы:
- • предопределенные в языке C# (в Стандарте они обозначены термином Built_In, который можно перевести как «встроенные»);
- • библиотечные (обычно из стандартной библиотеки .NET Framework);
- • определенные программистом (пользовательские).
Предопределенные типы включены в язык С#. К ним относятся:
- 1) object — тип ссылок (класс), который является первоначальным
- (единственным исходным) базовым для всех других типов языка С#, т. е. все другие типы являются производными от этого типа;
- 2) простые (базовые или фундаментальные) типы — типы значений, для которых в языке C# введены специальные обозначения;
- 3) string — тип ссылок (класс) для представления строк — последовательностей символов в кодировке Unicode, и др.
Рис. 2.1. Схема типов языка C#
Библиотечные и пользовательские типы могут быть как типами значений, так и типами ссылок. Чтобы пользоваться библиотечным типом, нужно знать его имя и возможности (поля, методы), а также название того пространства имен, которому он принадлежит.
Примечание. Как мы уже говорили, для сокращения квалифицированного (полного) имени нужного нам класса (типа) в программу включают директивы.
using название_пространства_имен; using static тип;
Например, чтобы написать программу на C# для работы с файлами, в коде используется директива:
using System.10;
После этого в программе становятся доступны с помощью сокращенных имен классов типы, необходимые для организации потокового ввода-вывода.
Новые типы значений могут быть введены в программу как перечисления и структуры. Для добавления новых типов ссылок используют классы, массивы, интерфейсы, делегаты. О том, как это делать в своих программах, т. е. как появляются типы, определенные программистом, речь еще впереди, а сейчас рассмотрим базовые типы.