Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky.rtf
Скачиваний:
27
Добавлен:
22.03.2016
Размер:
11.9 Mб
Скачать

2.2. Классификация типов c#

Система типов языка С# — вещь достаточно сложная и требующая

аккуратного рассмотрения при первом знакомстве. Общие отношения между типами

иллюстрирует иерархическая схема, приведённая на рис. 2.1. Как уже упоминалось

и как показано на схеме, все типы языка C# имеют общий базовый тип – класс

object "класс:класс object" . О делении типов на типы ссылок и типы значений мы

уже рассказывали. А вот с дальнейшей детализацией будем знакомиться постепенно.

И знакомство начнём не с классификации, соответствующей иерархии типов, а с

другого деления.

Рис. 2.1. Схема типов языка C#

Все типы, которые могут использоваться в программах на C#, делятся на три

группы:

предопределенные "предопределенные типы" в языке C# (в Стандарте они

обозначены термином Built_In, который можно перевести как "встроенные");

библиотечные

"библиотечные типы"

(обычно из стандартной

библиотеки .NET Framework);

определенные

программистом

" определенные

программисто

м

типы" (пользовательские).

Предопределенные типы всегда включены в язык C#. К ним относятся:

object

тип

ссылок

(класс),

который

является

первоначальным

(единственным исходным) базовым для всех других типов языка C#, то есть все

другие типы являются производными от этого типа;

простые (базовые или фундаментальные) типы;

string - тип ссылок (класс) для представления строк – последовательностей

символов в кодировке Unicode…

Библиотечные и пользовательские типы могут быть как типами значений,

так и типами ссылок. Чтобы пользоваться библиотечным типом, нужно знать его

имя и возможности (поля, методы), а также название того пространства имен,

которому он принадлежит.

Примечание. Как мы уже говорили, для сокращения квалифицированного

(полного) имени нужного нам класса (типа) в программу включают директиву

using название_пространства_имен;

Например, чтобы написать программу на C# для работы с файлами, в ней

используется директива:

using System.IO;

После этого в программе становятся доступны с помощью сокращенных имен

классов типы, необходимые для организации ввода-вывода.

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

структуры. Для добавления новых типов ссылок используют классы, интерфейсы,

делегаты. О том, как это делать в своих программах, т.е. как появляются типы,

определённые программистом, речь ещё впереди, а сейчас рассмотрим базовые

типы.

2.3. Простые типы. Константы-литерал

ы

Рассмотрение типов начнем с простых (базовых) типов значений, которые в

качестве базовых типов традиционны для многих языков программирования,

особенно для Си и Си++.

Простые типы значений языка C# можно подразделить на следующие группы:

числовые "числовые" (арифметические) типы;

логический "логический" (булевский) тип;

символьный "символьный" тип.

К числовым типам относятся: знаковые и беззнаковые целочисленные типы

"целочисленные типы" , вещественные типы "вещественные типы" и десятичный

тип "десятичный тип" .

Числовые значения представляются в программе с помощью констант

(литералов), и переменных трех разных видов:

целые числа (знаковые типы: sbyte, short, int, long, беззнаковые типы: byte,

ushort, uint, ulong);

вещественные числа (типы float, double);

десятичные числа (тип decimal).

Примеры целочисленных литералов:

48 – знакового целого типа (int);

43L – знакового длинного целого типа (long);

49U - беззнакового целого типа (uint);

93UL - беззнакового длинного целого типа (ulong).

Обратите внимание на необходимость суффиксов. L (или l) используется для

придания литералу типа long. Суффикс U (или u) превращает литерал в беззнаковое

значение (значение беззнакового типа).

Константы (литералы) вещественных типов могут быть записаны в виде с

фиксированной точкой:

101.284 – тип double

-0.221F – тип float

12.0f – тип float

Кроме того, широко используется экспоненциальная запись — научная

нотация, при которой явно выписываются мантисса и экспонента, а между ними

размещается разделить Е или е. Примеры:

-0.24Е-13 – тип double

1.44Е+11F – тип float

-16.3Е+02f – тип float

Обратите внимание на необходимость суффикса F или f в записи

вещественной константы с одинарной точностью. При его отсутствии константа по

умолчанию воспринимается и обрабатывается как значение типа double.

Тип decimal специально введён в язык С#, чтобы обеспечить вычисления, при

выполнении которых недопустимы (точнее, должны быть минимизированы) ошибки

округления. Например, при финансовых вычислениях с большими суммами даже

минимальные погрешности за счёт округления могут приводить к заметным

потерям.

Переменные и константы типа decimal позволяют представлять числовые

значения в диапазоне от 10-28 до 7,9.1028. Для каждого числа выделяется 128

двоичных разрядов, причем число хранится в форме с фиксированной точкой. С

помощью этого типа можно представлять числа, имеющие до 28-ми десятичных

разрядов.

В записи десятичной константы используется суффикс m (или M).

Примеры десятичных литералов:

308.0008M

12.6m

123456789000m

Для представления логических значений используются константы типа bool:

true – истина;

false – ложь.

По сравнению с предшествующими языками, например, Си и С++ в С# для

представления кодов отдельных символов (для данных типа char) используется не 1

байт, а 2 байта и для кодирования используется Unicod. Символьные литералы

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

'A', 'z', '2', 'O', 'Я'.

В

символьных

литералах

для

представления

одного

символа

могут

использоваться эскейп-последовательности "эскейп-последовательность" , каждая

из

которых

начинается

с

обратной

косой

черты

\.

В

виде

эскейп-

последовательностей изображаются управляющие символы:

\' – апостроф;

\" – кавычки;

\\ - обратная косая черта;

\а – звуковой сигнал;

\b – возврат на шаг (забой);

\n – новая строка;

\r – возврат каретки;

\t – табуляция (горизонтальная);

\0 – нулевое значение;

\f – перевод страницы;

\v – вертикальная табуляция.

С

помощью

явной

записи

числового

значения

кода

эскейп

-

последовательностью можно представить любой символ Юникода. Формат такого

представления:

'\uhhhh',

где h – шестнадцатеричная цифра, u – обязательный префикс. Предельные значения

от '\u0000' до '\uFFFF'.

Пример: '\u0066' соответствует символу 'f'

Разрешены

также

эскейп-последовательности

вида

'\xhh',

где

h-

шестнадцатеричная цифра, x – префикс. Например, '\x2B' представляет код символа

't'.

Соседние файлы в папке CSBasicCourse2ndedPodbelsky