- •Тема 1. Программирование на c# 8 Типы данных
- •Локальные и глобальные переменные
- •Описание всех встроенных типов языка c# и их основные характеристики.
- •Объявление переменных
- •Синтаксис объявления
- •Выражения
- •Приоритет и порядок выполнения операций
- •Перегрузка операций
- •Выполнение выражения
- •Операции "увеличить" и "уменьшить" (increment, decrement)
- •Логические операции
- •Условное выражение
- •Класс Math и его функции
- •Класс Random и его функции
- •Присваивание
- •Операторы языка c#
- •Операторы перехода
Тема 1. Программирование на c# 8 Типы данных
Все типы можно разделить на четыре категории:
Типы-значения (value), или значимые типы.
Ссылочные (reference).
Указатели (pointer).
Тип 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 |
Прародитель всех встроенных и пользовательских типов |