Явные преобразования числовых типов предназначены для преобразования из одного числового_типа к другому числовому_типу, для которого не существует неявного преобразования:
· из sbyte к byte, ushort, uint, ulong или char;
· из byte к sbyte и char;
· из short к sbyte, byte, ushort, uint, ulong или char;
· из ushort к sbyte, byte, short или char;
· из int к sbyte, byte, short, ushort, uint, ulong или char;
· из uint к sbyte, byte, short, ushort, int или char;
· из long к sbyte, byte, short, ushort, int, uint, ulong или char;
· из ulong к sbyte, byte, short, ushort, int, uint, long или char;
· из char к sbyte, byte или short;
· из float к sbyte, byte, short, ushort, int, uint, long, ulong, char или decimal;
· из double к sbyte, byte, short, ushort, int, uint, long, ulong, char, float или decimal;
· из decimal к sbyte, byte, short, ushort, int, uint, long, ulong, char, float или double.
Пример.Для выполнения явного преобразования числового типа необходимо
заключить тип, в который производится преобразование (приведение), в скобки перед преобразуемым значением или переменной. Следующая программа выполнят приведение типа doubleв тип int.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double to int.
a = (int)x;
System.Console.WriteLine(a);
}
}
}
Если x и y являются идентификаторами, то (x)y, (x)(y) и (x)(-y) являются выражениями приведения типа, а (x)-y не является, даже если x обозначает тип. Однако если x является ключевым словом, которое обозначает стандартный тип (например, int), то все четыре вида выражения являются выражениями приведения типа (потому что такое ключевое слово не может само быть выражением). Пример.
using System;
namespace ConsoleApplication5
{
class Program
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double to int.
a = (int)-x;
System.Console.WriteLine(a);
}
}
}