В этом уроке познакомимся с примитивными типами-значениями: числами, bool и char, а также структурами и перечислениями.
Примитивные типы-значения (числа)
Целочисленные типы
Для примитивных целочисленных типов в C# есть зарезервированные слова, которые позволяют не указывать тип данных как .NET-тип. Ниже представлена таблица соответствия ключевых слов C#, целочисленных типов .NET, их диапазон и размер в битах (количестве разрядов).
Тип C# | Тип .NET | Диапазон | Описание |
---|---|---|---|
sbyte | System.SByte | От -128 до 127 | 8-ми разрядное целое число со знаком |
byte | System.SByte | От 0 до 255 | 8-ми разрядное целое число без знака |
short | System.Int16 | От -32 768 до 32 767 | 16-разрядное целое число со знаком |
ushort | System.UInt16 | От 0 до 65 535 | 16-разрядное целое число без знака |
int | System.Int32 | От -2 147 483 648 до 2 147 483 647 | 32-разрядное целое число со знаком |
uint | System.UInt32 | От 0 до 4 294 967 295 | 32-разрядное целое число без знака |
long | System.Int64 | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | 64-разрядное целое число со знаком |
ulong | System.UInt64 | От 0 до 18 446 744 073 709 551 615 | 64-разрядное целое число без знака |
Примеры работы с целыми числами:
int n1 = 1000; System.Int32 n2 = 1000;
Для явного указания того, что число имеет тип long
, необходимо добавить суффикс L
или l
после записи числа, для ulong
– UL
(и все возможные комбинации регистров этих символов).
var l1 = 1000L; // число типа long var l2 = 1000UL; // число типа ulong
Число может быть представлено в десятичном, шестнадцатеричном и двоичном виде:
int numDec = 456; // десятичный формат int numHex = 0x1C8; // шестнадцатеричный формат: префикс 0x или 0X int numBin = 0b_1101; // двоичный формат: префикс 0b или 0B
Для всех целочисленных примитивных типов значение по умолчанию: 0.
Типы с плавающей точкой
Сводная таблица с типами с плавающей точкой:
Тип C# | Тип .NET | Точность | Описание |
---|---|---|---|
float | System.Single | 6–9 цифр | 4-х байтовое число |
double | System.Double | 15–17 цифр | 8-ми байтовое число |
decimal | System.Decimal | 28-29 знаков | 16-ти байтовое число |
Для явного указания типа данных при записи числа можно использовать литералы:
float f1 = 0.123f; // тип данных float, литеры f или F double d1 = 0.123d; // тип данных double, литеры d или D либо без литеры decimal dd1 = 0.123m; // тип данных decimal, литеры m или M
Для чисел с плавающей точкой значение по умолчанию: 0.0 с соответствующей литерой в конце.
Примитивные типы-значения (bool и char)
Тип bool
Тип bool
является типом C#, который представляется как System.Boolean
в .NET. Может принимать одно из двух значений: true
или false
.
bool b1 = false; System.Boolean b2 = true;
Значение по умолчанию для типа bool
: false
.
Тип char
Тип char
является ключевым словом для обозначения типа System.Char
, который служит для представления символьных значений, занимает два байта в памяти.
Переменной типа char
можно задать значение:
- в виде символа:
char c1 = 'a';
- escape-последовательностью Юникода (начинаются с префикса
\u
):
char c2 = '\u0026';
- шестнадцатеричной escape-последовательности (начинается с префикса
\x
):
char c3 = '\x0026';
- через приведение типа:
char c4 = (char)38;
Значением по умолчанию для char
: ‘\u0000’.
Структуры и перечисления
Рассмотрим обзорно, без деталей, что такое структуры и перечисления в C#.
Структуры
Структура – это инструмент для создания собственных типов, который синтаксически очень похож на класс, но экземпляры этого типа располагаются в стеке, а не в куче. Для объявления структуры используется ключевое слово struct
.
Вот пример структуры для моделирования понятия точка
из геометрии:
struct Point { public double X { get; set; } public double Y { get; set; } }
Для создания объекта типа Point
можно воспользоваться вот таким синтаксисом:
var point1 = new Point() { X = 1.2, Y = 3.4 }; Console.WriteLine($"{point1.X}, {point1.Y}"); // 1.2, 3.4
Перечисления (enum’ы)
Ещё одним типом-значением в C# является перечисление (enum). Технически это набор констант, которые как-то логически связаны между собой. Например, дни недели, месяцы, цвета и т.п.
Для объявления перечисления используется ключевое слово enum
:
enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
Мы можем создавать объекты типа Days
и присваивать им значения из заданного набор:
var day = Days.Monday;
В рамках нашего курса структурам и перечислениям будет посвящен отдельный модуль.
Если Вы хотите больше узнать про язык C#, приглашаем Вас на наш курс “C#. Базовый уровень“.