Урок 5. Приведение числовых типов данных в C#


Все уроки по C# расположены здесь.

На данном уроке мы продолжим обсуждение числовых типов данных в C#, а конкретно - исследуем приведение из одного числового типа к другому.

Что такое приведение типов?

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

Неявное приведение

Неявное приведение типов данных происходит автоматически, когда назначаемый тип данных совместим с новым значением. Тип данных совместим, если все возможные значения, которые он может содержать, также могут храниться в получаемой переменной. Например, тип int может быть неявно преобразован в double. Обратное неверно, так как int может быть не в состоянии провести double значение без отбрасывания дробной части.

Если типы совместимы, то можно просто присвоить одно значение другому. Если неявное приведение типов недопустимо, компилятор вызывает ошибку, а код не компилируется. Следующие примеры иллюстрируют это

int i = 1;
long l = 2;
double d = 3.456;
 
//  int может быть неявно преобразован в long
l = i;
 
// double может принимать int
d = i;
 
// long может быть больше максимального размера int, поэтому это недопустимо
i = l;
 
// double может быть усечен, если присвоено a long, поэтому это недопустимо
l = d;
Явное приведение

Неявное приведение полезно для многих целей. Однако часто бывает необходимо выполнить приведение типов между несовместимыми типами. Например, возможно, что значение с десятичной частью будет передано в целое число. Хотя целочисленная переменная физически не может содержать дробную часть значения, вы можете выполнить это приведение, зная, что значение будет усечено.

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

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

int i = 1;
long l = 2;
double d = 3.456;
long BigT= 9999999999;
 
// Явное приведение long в int
i = (int)l;
 
// Явно преобразует double в int.  Дробная часть обрезается.
i = (int)d;
 
//  Хотя компилятор и не выдаст ошибок, но это создает непредсказуемый
// результат, поскольку значение слишком велико для присвоения int
i = (int)BigT;
Предыдущий: Урок 4. Числовые литералы в C# | Следующий: Урок 6. Арифметические операторы C#
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, Уроки по си шарп, си шарп, типы данных




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Проблема с датами на JavaScript в айфоне, сафари и IE
Гибкая тема для вордпресс, или история одного заказа
Конвейеризация и постоянные соединения