Явные преобразования числовых типов

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

Преобразования упаковки

Пример

Если элемент массива ссылочного типа передается в качестве параметра ссылки или вывода, во время выполнения необходимо убедиться, что фактический тип элементов массива идентичен типу параметра.

using System;

namespace ConsoleApplication5

{

class Program

{

static void F(ref object x) { }

static void Main()

{

object[] a = new object[10];

object[] b = new string[10];

F(ref a[0]); // Ok

F(ref b[1]); // ArrayTypeMismatchException

}

}

}

Понятие упаковки и распаковки является ключевым в системе типов C#. С помощью данных операций осуществляется связь между типами значений и ссылочными типами за счет возможности преобразования любого значения типа значений к типу object и обратно.

Преобразование упаковки обеспечивает неявное преобразование типа значений в ссылочный тип.

из любого типа_значений к типу object. Пример.

int i = 123;

object box = i;

Выражение приведения типа используется для явного преобразования выражения в данный тип.

выражение_приведения_к_типу:
(тип) унарное_выражение

Выражение_приведения_типа вида (T)E, где T является типом, а E — унарным_выражением, выполняет явное преобразование значения E в тип T.

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

· из 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);

}

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: