* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Преобразование типов
7 февраля 2009

Время от времени требуется преобразовывать одни типы в другие. Подобное пре-
образование можно выполнить неявно, то есть автоматически, или явно, когда про-
граммист самостоятельно запрашивает преобразование типов.
Неявное преобразование
Неявное преобразование типов выполняется автоматически, если только оно не
ведет к потере данных, например:
Visual Basic .NET
Dim anlnteger As Integer = 100
Dim along As Long
' Поскольку тип long способен принять любое
значение типа integer, потери данных не будет,
along = anlnteger
Visual C#
int Anlnteger = 100;
long along;
// Поскольку тип long способен принять любое
// значение типа integer, потери данных не будет.
along = anlnteger;
Если один тип разрешается неявно преобразован в другой, его всегда можно ис-
пользовать вместо второго типа, скажем, при вызове методов, причем для этого не
нужен никакой особый синтаксис:
Visual Basic .NET
1 Предполагается, что методу TakesADouble требуется параметр типа Double.
Dim I As Integer = 100
1 Перед вызовом переменная I неявно
1 преобразуется в Double и передается методу,
TakesADouble(I)
Visual C#
// Предполагается, что методу TakesADouble требуется параметр типа Double,
int I = 100;
// Перед вызовом переменная I неявно
// преобразуется в Double и передается методу.
TakesAdouble(I);
Неявные преобразования, которые поддерживаются в Visual Basic .NET и в Visual
С#, перечислены в таблице 3-3.
Таблица 3-3. Неявные преобразования типов,
допустимые в Visual Basic .NET и Visual C#
Исходный тип Целевой тип
Byte (Visual Basic .NET) Short, Integer, Long, Single, Double, Decimal
byte (Visual C#) short, ushort, int, uint, long, ulong, float, double, decimal
Short Integer, Long, Single, Double, Decimal
short int, long, float, double, decimal
Integer Long, Single, Double, Decimal
int long, float, double, decimal
Long Single, Double, Decimal
long float, double, decimal
Single Double
float Double
Char Integer, Long, Single, Double, Decimal
char Int, uint, long, ulong, float, double, decimal
sbyte (только в Visual C#) short, int, long, float, double, decimal
ushort (только в Visual C#) int, uint, long, ulong, float, double, decimal
uint (только в Visual C#) long, ulong, float, double, decimal
ulong (только в Visual C#) float, double, decimal
Явное преобразование
Если требуемое преобразование нельзя выполнить неявно, необходимо сделать это
явно. Такое преобразование называется приведением (cast) типов. Для явного пре-
образования в Visual Basic .NET служит функция СТуре, а в Visual C# для этого при-
меняется специальный синтаксис, например:
Visual Basic .NET
Dim aLong As Long = 1000
Dim anlnteger As Integer
anlnteger - CType(aLong, Integer)
Visual C#
long along - 1000;
int anlnteger;
anlnteger = (int)aLong;
Однако явное преобразование таит иногда риск ошибок. В предыдущем приме-
ре приведение типов выполняется без проблем, поскольку типы Long и Integer спо-
собны принять значение 1000. А теперь рассмотрим такой пример:
Visual Basic .NET
Dim anlnteger As Integer - 100000
Dim aShort As Short
aShort = CType(anInteger, Short)
Visual C#
int anlnteger = 100000;
short aShort;
aShort - (short)anlnteger;
При компиляции и исполнении этого примера ошибок не возникает, но при
проверке значения переменной aShort она окажется равной —31072. Максимально
возможное значение aShort меньше значения переменной, которую пытаются к ней
привести, преобразование в результате выполняется некорректно, и переменная
получает неожиданное значение (—31072).
Примечание Поскольку явное преобразование по своей природе небезопасно, сле-
дует применить его только при крайней необходимости и предусмотреть обработку
последствий некорректного преобразования.
Параметр Strict в Visual Basic .NET
В Visual Basic .NET поддерживается параметр Option Strict. Он включает строгую
проверку типов, допускающую только преобразования типов без потери данных.
Если этот параметр отключен, строгая проверка типов не выполняется, и все пре-
образования осуществляются неявно. По умолчанию этот параметр отключен, что-
бы активизировать его, необходимо в самом начале кода поместить ключевое слово
Option, например, так:
Visual Basic .NET
Option Strict On
Отключение параметра Option Strict возможно лишь для преемственной совмес-
тимости с прежними версиями Visual Basic. Следует писать программы с парамет-
ром Option Strict, установленным в On. Это позволит «отловить» на стадии компи-
ляции многие ошибки, которые очень трудно отследить во время выполнения.
^ Преобразование типов
1. Если преобразование выполняется без потери данных, оно осуществляется не-
явно, явное приведение типов в этом случае не требуется.
2. Если преобразование типов чревато потерей данных, необходимо выполнить его
явно. В Visual Basic .NET для этого применяется функция СТуре, а в Visual C# —
специальный синтаксис.

Теги: .NET

Статьи по теме:

Извлечение данных с помощью объектов DataAdapter
Массивы
Применение объектов DataSet и обновление данных
Применение наследования с формами
Применение типов данных
Установка порядка передачи фокуса при нажатии клавиши Tab
Создание и настройка объекта DataAdapter
Свойства, доступные только для чтения или только для записи
Разрешения
Использование провайдеров дополнительных свойств
Работа с несколькими результирующими наборами
Замыкания (closure)
Свойства по умолчанию и индексаторы
Запись трассировочных данных в журнал событий
Получение и установка текущей культуры пользовательского интерфейса
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Преобразование типов. Регион сайта: Москва и Санкт-Петербург