Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+Presentation_2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
363.52 Кб
Скачать

2.2.3. Приведение и преобразование типов

(http://msdn.microsoft.com/ru-ru/library/ms173105.aspx)

Примеры неявного преобразования:

int i = 0;

double d = 0;

i = 10;

d = i; // Неявное преобразование

Таблица 2.2. Неявные преобразования типов

Исходный тип

Тип назначения

sbyte

short, int, long, float, double, decimal

byte

short, ushort, int, uint, long, ulong, float, double, decimal

short

int, long, float, double, decimal

ushort

int, uint, long, ulong, float, double, decimal

int

long, float, double, decimal

uint

long, ulong, float, double, decimal

long

float, double, decimal

ulong

float, double, decimal

char

ushort, int, uint, long, ulong, float, double, decimal

float

double

Примеры явного преобразования:

int i = 0;

double d = 3.5;

i = (int) d; // Явное преобразование, или "приведение"

Таблица 2.3. Явные преобразования типов

Исходный тип

Тип назначения

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

2.2.4. Совместимость типов

Пример искажения результата или потери точности при явном преобразовании типов:

byte b1;

int in1 = 1, in2 = 2, in3 =1000;

b1 = in1 + in2; // Ошибка! Тип int несовместим с типом byte

b1 = (byte)(in1 + in2); // Правильное преобразование

Console.WriteLine(b1); // Вывод: 3

b1 = (byte)(in3 + in2);

Console.WriteLine(b1); // Вывод: 234

2.2.5. Методы преобразования типа

Таблица 2.4. Основные методы класса System.Convert (http://msdn.microsoft.com/ru-ru/library/system.convert_methods.aspx)

Метод

Описание

ChangeType(V,T);

Возвращает объект (Object) указанного типа (T) и эквивалентное указанному объекту (V) значение.

FromBase64CharArray (arrCh[],i,L);

Преобразует подмножество массива символов Unicode 64-разрядной платформы в эквивалентный массив 8-битовых целых чисел без знака. Параметры метода определяют подмножество входного массива (arrCh) и число преобразуемых элементов (L), начиная с индекса i.

FromBase64String(s);

Преобразует указанную строку (s) 64-разрядной платформы в эквивалентный массив 8-битных целых чисел без знака.

IsDBNull(V);

Возвращает значение, указывающее, имеет ли заданный объект (V) тип DBNull.

ToBase64CharArray (arrByte[],i1,L, arrCh[],i2);

Преобразует подмножество (L элементов, начиная с i1-го) массива 8-битных целых чисел без знака (arrByte) в эквивалентное подмножество (начиная с i2-го элемента) массива символов (arrCh) Unicode 64-разрядной платформы. Возвращает целое число со знаком (Int32), представляющее число байтов в выходном массиве (arrCh).

ToBase64String (arrByte[]);

ToBase64String (arrByte[],i,L);

Преобразует значения всего или подмножества (L элементов, начиная с i-го) массива 8-битовых целых чисел без знака (arrByte) в эквивалентное строковое представление 64-разрядной платформы.

ToBoolean(V);

Преобразует указанное значение (числового типа) в логическое (Boolean). Возвращает true – если V <> 0, и false – если V = 0.

ToByte(V);

Преобразует указанное значение в 8-битное целое число без знака (Byte).

ToChar(V);

Преобразует указанное значение в символ Unicode (Char).

ToDateTime(V);

Преобразует указанное значение в значение даты или времени (DateTime).

ToDecimal(V);

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

ToDouble(V);

Преобразует указанное значение в вещественное число двойной точности (Double).

ToInt16(V);

Преобразует указанное значение в 16-битное целое число (Int16).

ToInt32(V);

Преобразует указанное значение в 32-битное целое число (Int32).

ToInt64(V);

Преобразует указанное значение в 64-битное целое число (Int64).

ToSByte(V);

Преобразует указанное значение в 8-битное целое число (SByte).

ToSingle(V);

Преобразует указанное значение в вещественное число одинарной точности (Single).

ToString(V);

Преобразует указанное значение в его строковое представление (String).

ToUInt16(V);

Преобразует указанное значение в 16-битное целое число без знака (UInt16).

ToUInt32(V);

Преобразует указанное значение в 32-битное целое число без знака (UInt32).

ToUInt64(V);

Преобразует указанное значение в 64-битное целое число без знака (UInt64).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]