Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_2.doc
Скачиваний:
8
Добавлен:
22.05.2015
Размер:
783.36 Кб
Скачать

Преобразования разнотипных значений

По мнению многих программистов, прежние версии VB слишком либерально относились к преобразованию типов. В результате возникало явление «злостного искажения типов» — скажем, VB6 позволял умножить строковое представление числа на Integer.

В VB .NET предусмотрен режим жесткой проверки типов Option Strict. Чтобы активизировать его, включите следующую команду в начало программы (также можно воспользоваться флажком Strict Type Checking на вкладке Build диалогового окна Project Properties):

Option Strict On

При активизации этого режима (а это следует делать всегда!) VB .NET требует, чтобы любые преобразования типов, которые могут привести к потере данных, выполнялись явно. Например, при преобразовании Single к типу Integer может произойти потеря точности, поскольку тип Integer не позволяет представить весь интервал допустимых значений типа Single. С другой стороны, если потеря данных исключена (скажем, при преобразовании Integer в тип Long или Decimal), VB .NET выполняет преобразование автоматически. В документации VB .NET преобразования без потери данных называются расширяющими преобразованиями (widening conversions). В таблице 4.3 переделены допустимые расширяющие преобразования для базовых типов данных.

Таблица 4.3. Допустимые расширяющие преобразования для базовых типов VB .NET

Тип

Допустимое расширение

Byte

Byte, Short, Integer, Long, Decimal Single, Double

Short

Short, Integer, Long, Decimal, Single, Double

Integer

Integer, Long, DecimaL Single, Double

Long

Long, DecimaL Single, Double

Single

Single, Double

Date

Date, String

Более того, при активном режиме жесткой проверки типов вы не сможете использовать конструкции вида:

Dim foo As Boolean

foo = 3

В этом фрагменте логической переменной foo значение True присваивается в виде ненулевого. Подобные преобразования должны выполняться явно:

Dim foo As Boolean

foo =СВооl(З)

Vb .Net автоматически выполняет преобразование между символьным типом и строкой, состоящей из одного символа.

При желании вы можете вернуться к доисторическим временам и отказаться от жесткой проверки типов. Для этого достаточно начать модуль со следующей команды:

Option Strict Off

Впрочем, поступать подобным образом не рекомендуется.

Если содержимое переменной одного типа может быть преобразовано к другому типу, можно воспользоваться функцией явного преобразования, как в только что приведенном примере с СВооl. Функции явного преобразования типов перечислены в таблице 4.4.

Таблица 4.4. Функции явного преобразования типов

Функция Описание

CBool Преобразует выражение к типу Boolean

CByte Преобразует выражение к типу Byte

CInt Преобразует выражение к типу Integer с округлением

CIng Преобразует выражение к типу Long с округлением

CSng Преобразует выражение к типу Single

CDate Преобразует выражение к типу Date

СDbl Преобразует выражение к типу Double

CDec Преобразует выражение к типу Decimal

CStr Преобразует выражение к типу String

CChar Преобразует первый символ строки к типу Char