Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 1. Программирование на C#.doc
Скачиваний:
24
Добавлен:
02.04.2015
Размер:
135.17 Кб
Скачать

Тема 1. Программирование на c# 8 Типы данных

Все типы можно разделить на четыре категории:

  1. Типы-значения (value), или значимые типы.

  2. Ссылочные (reference).

  3. Указатели (pointer).

  4. Тип void.

Эта классификация основана на том, где и как хранятся значения типов. Для ссылочного типа значение задает ссылку на область памяти в "куче", где расположен соответствующий объект. Для значимого типа используется прямая адресация, значение хранит собственно данные, и память для них отводится, как правило, в стеке. В отдельную категорию выделены указатели, что подчеркивает их особую роль в языке. Указатели имеют ограниченную область действия и могут использоваться только в небезопасных блоках, помеченных как unsafe. Особый статус имеет и тип void, указывающий на отсутствие какого-либо значения. В языке C# жестко определено, какие типы относятся к ссылочным, а какие - к значимым. К значимым типам относятся: логический, арифметический, структуры, перечисление. Массивы,строкии классы относятся к ссылочным типам. C# массивы рассматриваются как динамические, их размер может определяться на этапе вычислений, а не в момент трансляции. Строки в C# также рассматриваются как динамические переменные, длина которых может изменяться. Поэтому строки и массивы относятся к ссылочным типам, требующим распределения памяти в "куче". Все типы делятся на встроенные и определенные пользователем. Все встроенные типы C# однозначно отображаются, а фактически совпадают с системными типами каркаса Net Framework, размещенными в пространстве имен System. Поэтому всюду, где можно использовать имя типа, например, - int, с тем же успехом можно использовать и имя System.Int32.

Локальные и глобальные переменные

Во всех языках программирования, в том числе и в C#, основной контекст, в котором появляются переменные, - это процедуры.Переменные, объявленные на уровне процедуры, называютсялокальными, - они локализованы в процедуре.

Переменнуюможно объявлять в любой точке процедурного блока.Область ее видимостираспространяется от точки объявления до конца процедурного блока.

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

Описание всех встроенных типов языка c# и их основные характеристики.

Логический тип

Имя типа

Системный тип

Значения

Размер

Bool

System.Boolean

true, false

8 бит

Арифметические целочисленные типы

Имя типа

Системный тип

Диапазон

Размер

Sbyte

System.SByte

-128 — 127

Знаковое, 8 Бит

Byte

System.Byte

0 — 255

Беззнаковое, 8 Бит

Short

System.Short

-32768 —32767

Знаковое, 16 Бит

Ushort

System.UShort

0 — 65535

Беззнаковое, 16 Бит

Int

System.Int32

≈(-2*10^9 — 2*10^9)

Знаковое, 32 Бит

Uint

System.UInt32

≈(0 — 4*10^9)

Беззнаковое, 32 Бит

Long

System.Int64

≈(-9*10^18 — 9*10^18)

Знаковое, 64 Бит

Ulong

System.UInt64

≈(0— 18*10^18)

Беззнаковое, 64 Бит

Арифметический тип с плавающей точкой

Имя типа

Системный тип

Диапазон

Точность

Float

System.Single

+1.5*10^-45 - +3.4*10^38

7 цифр

Double

System.Double

+5.0*10^-324 - +1.7*10^308

15-16 цифр

Арифметический тип с фиксированной точкой

Имя типа

Системный тип

Диапазон

Точность

Decimal

System.Decimal

+1.0*10^-28 - +7.9*10^28

28-29 значащих цифр

Символьные типы

Имя типа

Системный тип

Диапазон

Точность

Char

System.Char

U+0000 - U+ffff

16 бит Unicode символ

String

System.String

Строка из символов Unicode

Объектный тип

Имя типа

Системный тип

Примечание

Object

System.Object

Прародитель всех встроенных и пользовательских типов