Урок 3. Предопределённые типы данных в C#

В любом современном языке программирования существуют стандартные (предопределённые) типы данных. Ниже приведены все предопределённые типы данных существующие в языке C#:


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

Под строго-типизированными языками программирования подразумевают языки в которых переменным при создании нужно указывать какого типа она будет и в будущем она не сможет хранить в себе значения других типов. Например, если будет создана переменная целочисленного типа, то в будущем записать в неё ту же строку "Hello world!!!" не получится (будет ошибка).

Под динамически типизированными языками программирования подразумевают языки в которых переменная меняет свой тип в соответствии к данным которые она в себе хранит. Например, если изначально создать переменная «а» и в неё записать значение 2, то она будет числового типа, но после записи в неё строки "Hello world!!!" (ошибки не будет!)- она станет строковой переменной.

C# относится к строго типизированным языкам программирования, поэтому созданные на нём переменные не могут изменять свой тип во время работы программы. Но поскольку Андерс Хейлсберг при разработке C# брал лучшие различные идеи из существующих на то время языков программирования, то в C# был добавлен отдельный тип данных позволяющий использовать динамическую типизацию – это тип dynamic. Данный тип имеет свои особенности использования, с которыми нужно ознакомиться перед его применением.

С рисунка выше видно, что предопределённые типы делятся на 4 вида:

  1. строковой тип (string);
  2. динамический тип (dynamic);
  3. тип object - данный тип является базовым типом для всех остальных;
  4. простые типы.

Простые типы в свою очередь также делятся на две категории – это числовые и нечисловые.

Существует только два предопределённых нечисловых типа:

  • тип char – в переменных данного типа можно хранить один символ в формате Unicode;
  • тип bool – многие слышали о изобретённой Джорджем Булем булевой логике (в данной логике говориться, что любое выражение может быть истинным (true) или ложным (false)). Данный тип предоставляет возможность хранить результат выражений и соответственно может храниться только два значения true и false.

Существует три вида предопределённых числовых типов:

  • целочисленные – типы byte, sbyte, short, ushort, int, uint, long, ulong – в переменных данных типов могут хранится только целые числа (например, -100, 45, 0). Некоторые из них (sbyte, short, int, long) могут хранить отрицательные числа, а некоторые нет (byte, ushort, uint, ulong). Приставка u означает, что они unsigned (без знаковые), а приставка s – signed (знаковые).
  • вещественные числа – типы float (число с одинарной точностью) и double (число с двойной точностью) – в переменных данных типов могут хранится только вещественные числа (числа с плавающей точкой)
  • десятичные числа, а именно тип decimal – данный тип позволяет сохранять число без потери точности, как оно было передано в переменную таким и останется (в отличии от типов float и double где может произойти округление).

Каждый тип также имеет определённый размер, ниже наведена таблица в которой указываются размеры всех предопределённых типов в c#.

Размер переменных типа string зависит от того, сколько символов в записанной в них строке. Например, если в переменную записать строку "Hello world!!!", то её размер будет: 2 * 11 = 22 байта (размер каждого символа равен 2 байтам).

Размер переменной типа object зависит от разрядности ОС в которой работает программа. Если система 32-разрядная, то размер переменной типа object будет 4 байта, если в 64-разрядной, то 8 байт.

Также может возникнуть вопрос, а зачем нужно столько разных типов для хранения тех же целых чисел, на что ответ тоже очень прост: если нужно создать одну переменную, то нельзя заметить преимущества большого разнообразия, но если, например, будет создаваться массив который хранит в себе 1 000 000 переменных, то будет ощутимая разница если его элементы будут типа byte или же int (разница в размере массива при разных типах будет 3 000 000 байт, что достаточно ощутимо).

Поэтому есть правило, если нужно создать массив значений, которые попадают в диапазон типа с меньшим размером (например, в диапазон типа byte), то не нужно использовать для их хранения тип с большим размером (например, в диапазон типа int).

источник: видеоурок Александра Шевчука "ВИДЕОУРОК №2. МАШИННАЯ МАТЕМАТИКА И СИСТЕМЫ СЧИСЛЕНИЯ"

%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202 предыдущая статья | следующая статья %D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202