Преобразование типов в C#: неявное и явное приведение
Что такое преобразование типов
Преобразование типов — это процесс конвертации данных одного типа в другой. В C# это также называется приведением типов (Type Casting). Существует две формы приведения типов:
Неявное преобразование типов
Эти преобразования выполняются C# автоматически в типобезопасном режиме. Примеры: преобразование из меньших целочисленных типов в большие (например, int в long) и преобразование из производных классов в базовые.
Явное преобразование типов
Эти преобразования выполняются программистом явно с помощью оператора приведения. Они требуют использования оператора приведения (тип), так как могут привести к потере данных или выбрасыванию исключений.
Пример явного преобразования
using System;
namespace TypeConversionApplication
{
class ExplicitConversion
{
static void Main(string[] args)
{
double d = 5673.74;
int i;
// явное приведение double к int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
Результат выполнения:
5673
Обратите внимание: дробная часть отбрасывается, округления не происходит.
Встроенные методы преобразования типов
C# предоставляет класс Convert со статическими методами для преобразования между базовыми типами:
| Метод | Описание |
|---|---|
ToBoolean | Преобразует тип в логическое значение (true/false), где это возможно. |
ToByte | Преобразует тип в байт (0–255). |
ToChar | Преобразует тип в один Unicode-символ. |
ToDateTime | Преобразует целочисленный или строковый тип в структуру даты и времени. |
ToDecimal | Преобразует число с плавающей точкой или целое в decimal. |
ToDouble | Преобразует тип в double. |
ToInt16 | Преобразует тип в 16-битное целое число (short). |
ToInt32 | Преобразует тип в 32-битное целое число (int). |
ToInt64 | Преобразует тип в 64-битное целое число (long). |
ToSByte | Преобразует тип в знаковый байт (-128–127). |
ToSingle | Преобразует тип в float (одиночная точность). |
ToString | Преобразует тип в строковое представление. |
ToType | Преобразует тип в указанный тип. |
ToUInt16 | Преобразует тип в беззнаковое 16-битное целое (ushort). |
ToUInt32 | Преобразует тип в беззнаковое 32-битное целое (uint). |
ToUInt64 | Преобразует тип в беззнаковое 64-битное целое (ulong). |
Пример: преобразование различных типов в строку
using System;
namespace TypeConversionApplication
{
class StringConversion
{
static void Main(string[] args)
{
int i = 75;
float f = 53.005f;
double d = 2345.7652;
bool b = true;
Console.WriteLine(i.ToString());
Console.WriteLine(f.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(b.ToString());
Console.ReadKey();
}
}
}
Результат:
75
53.005
2345.7652
True
Дополнительные способы преобразования
- Методы
Parse/TryParse— для преобразования строк в числа (например,int.Parse("123")).TryParseбезопаснее, так не выбрасывает исключение при ошибке. - Интерфейс
IConvertible— реализуется базовыми типами для преобразования в любой другой базовый тип. - Пользовательские операторы преобразования —
implicitиexplicitоператоры в собственных классах.
Язык C
- Освоение преобразования типов в C#: неявное, явное, Parse и Convert
- Мастерство преобразования типов в Python: Полное руководство
- Числа, преобразование типов и математика в Python: полное руководство
- Освоение приведения типов в Java: от расширения к сужению и далее
- Дженерики в Java: упрощение сортировки и повышение типобезопасности
- Спецификации низкоуглеродистой стали ASTM A1018 Grade CS Type B
- Спецификации стали ASTM A424 Grade Type II
- Спецификации стали ASTM A424 Grade Type I
- Сталь ASTM A792 Grade CS Type A — Свойства и спецификации
- Труба ASTM A53 Grade A Type E: спецификации и ключевые свойства