Вы можете проверить этот курс на мой сайт.

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

Неявное преобразование

Когда данные одного типа присваиваются переменной другого типа, неявное преобразование типов происходит автоматически при следующих условиях:

  • оба типа совместимы;
  • диапазон чисел целевого типа шире, чем у исходного типа;

Все неявные преобразования можно описать следующим списком (сначала идет тип, затем типы, к которым можно выполнить неявное приведение):

  • byte — короткий, ushort, int, uint, long, ulong, float, double, decimal;
  • byte — короткий, int, long, float, double, decimal;
  • sbyte — короткий, int, long, float, double, decimal;
  • short — int, long, float, double, decimal;
  • ushort — int, uint, long, ulong, float, double, decimal;
  • int — long, float, double, decimal;
  • uint — длинный, длинный, плавающий, двойной, десятичный;
  • long — число с плавающей запятой, двойное число, десятичное число;
  • улонг — с плавающей запятой, двойной, десятичный;
  • поплавок — двойной;
  • char — ushort, int, uint, long, ulong, float, double, decimal;

Пример:

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

int — 4 байта, диапазон — от -2147483648 до 2147483647;

короткий — 1 байт, диапазон — от -32768 до 32767;

Здесь может помочь явное преобразование.

Явное преобразование

Какими бы полезными ни были неявные преобразования типов, они не удовлетворяют всем требованиям программирования, поскольку допускают только расширяемые преобразования совместимых типов (см. таблицу выше). Во всех остальных случаях необходимо использовать явное приведение типов.

Суть операции приведения типа заключается в том, что перед значением в скобках указывается тип, к которому данное значение должно быть приведено.

Синтаксис:

(target_type)variable

В приведенном ниже примере мы явно приводим переменную типа int к типу byte:

Давайте посмотрим на другой пример:

Почему num2 имеет значение 44? Поскольку число 300 не попадает в допустимый диапазон для типа байта (0, 255), недопустимые числа будут усечены.

Как решить эту проблему? Мы можем выбрать другой тип данных вместо byte, например, short. Но бывают ситуации, когда мы точно не знаем, какое значение будет иметь num1. Чтобы избежать таких ситуаций, в C# есть ключевое слово checked.

При использовании ключевого слова checked приложение создает исключение переполнения. Мы поговорим об исключении и блоке try/catch позже, просто имейте в виду, что ключевое слово checked используется внутри try/catch.

Содержание

Предыдущая статья -› 2.3 Типы данных

Следующая статья -› 2.5 Консольный ввод/вывод

Присоединяйтесь к нашему сообществу в Telegram — https://t.me/itifico

Если вы хотите поддержать меня, вы можете купить мне чашку кофе, и я выпью ее, когда буду писать следующую статью :)

Список пожертвований:

  1. Динеш Чинталапуди — 3$
  2. Неизвестный — 5$
  3. Нейси — 3$