Примитивные типы-значения. Структуры и перечисления

В этом уроке познакомимся с примитивными типами-значениями: числами, bool и char, а также структурами и перечислениями.

Целочисленные типы

Для примитивных целочисленных типов в C# есть зарезервированные слова, которые позволяют не указывать тип данных как .NET-тип. Ниже представлена таблица соответствия ключевых слов C#, целочисленных типов .NET, их диапазон и размер в битах (количестве разрядов).

Тип C#Тип .NETДиапазонОписание
sbyteSystem.SByteОт -128 до 1278-ми разрядное целое число со знаком
byteSystem.SByteОт 0 до 2558-ми разрядное целое число без знака
shortSystem.Int16От -32 768 до 32 76716-разрядное целое число со знаком
ushortSystem.UInt16От 0 до 65 53516-разрядное целое число без знака
intSystem.Int32От -2 147 483 648 до 2 147 483 64732-разрядное целое число со знаком
uintSystem.UInt32От 0 до 4 294 967 29532-разрядное целое число без знака
longSystem.Int64От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 80764-разрядное целое число со знаком
ulongSystem.UInt64От 0 до 18 446 744 073 709 551 61564-разрядное целое число без знака

Примеры работы с целыми числами:

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ТочностьОписание
floatSystem.Single6–9 цифр4-х байтовое число
doubleSystem.Double15–17 цифр8-ми байтовое число
decimalSystem.Decimal28-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

Тип bool является типом C#, который представляется как System.Boolean в .NET. Может принимать одно из двух значений: true или false.

bool b1 = false;
System.Boolean b2 = true;

Значение по умолчанию для типа boolfalse.

Тип 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#. Базовый уровень“.

Добавить комментарий

Ваш адрес email не будет опубликован.