Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Неявное преобразование не требует специального синтаксиса в исходном коде. В следующем примере Visual Basic неявно преобразует значение k в число с одинарной точностью с плавающей точкой перед присваиванием q.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
Явное преобразование использует ключевое слово преобразования типов. Visual Basic предоставляет несколько таких ключевых слов, которые преобразуют выражение в скобках в нужный тип данных. Эти ключевые слова действуют как функции, но компилятор создает встроенный код, поэтому выполнение немного быстрее, чем при вызове функции.
В следующем расширении предыдущего примера ключевое слово CInt преобразует значение q обратно в целое число перед его назначением в k.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Ключевые слова конверсии
В следующей таблице показаны доступные ключевые слова преобразования.
| Ключевое слово преобразования типов | Преобразует выражение в тип данных | Допустимые типы данных выражения для преобразования |
|---|---|---|
CBool |
Логический тип данных | Любой числовой тип (включаяByte, SByteи перечисленные типы), StringObject |
CByte |
Тип данных byte | Любой числовой тип (включая SByte и перечисленные типы), Boolean, , StringObject |
CChar |
Тип данных Char |
String, Object |
CDate |
Тип данных Дата |
String, Object |
CDbl |
Тип данных Double | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CDec |
Тип десятичных данных | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CInt |
Целочисленный тип данных | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CLng |
Длинный тип данных | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CObj |
тип данных объекта | Любой тип |
CSByte |
Тип данных SByte | Любой числовой тип (включая Byte и перечисленные типы), Boolean, , StringObject |
CShort |
Короткий тип данных | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CSng |
Тип данных Single | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CStr |
Тип данных строки | Любой числовой тип (включая Byte, SByte и перечисленные типы), Boolean, Char, Char массив, Date, Object |
CType |
Тип, указанный после запятой (,) |
При преобразовании в элементарный тип данных (включая массив элементарного типа), те же типы, что допускаются для соответствующего ключевого слова преобразования. При преобразовании в составной тип данных учитываются интерфейсы, которые он реализует, и классы, от которых он наследуется. При преобразовании в класс или структуру, в которой перегружен оператор CType, этот класс или структура |
CUInt |
Тип данных UInteger | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CULng |
Тип данных ULong | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
CUShort |
Тип данных UShort | Любой числовой тип (включаяByte, SByteи перечисленные типы), Boolean, , StringObject |
Оператор CType
Оператор CType работает с двумя аргументами. Первое — это выражение, которое необходимо преобразовать, а второй — конечный тип данных или класс объектов. Обратите внимание, что первый аргумент должен быть выражением, а не типом.
CType — это встроенная функция, т. е. скомпилированный код делает преобразование часто без создания вызова функции. Это повышает производительность.
Сравнение CType с другими ключевыми словами преобразования типов см. в разделе "Оператор DirectCast" и "Оператор TryCast".
Простые типы
В следующем примере показано использование CType.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Составные типы
Можно использовать CType для преобразования значений в составные типы данных, а также в простые типы. Его также можно использовать для принудительного применения класса объектов к типу одного из его интерфейсов, как показано в следующем примере.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Типы массивов
CType также может преобразовать типы данных массива, как показано в следующем примере.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
Дополнительные сведения и пример см. в разделе "Преобразования массивов".
Типы, определяющие CType
Вы можете определить CType для класса или структуры, которые вы определили. Это позволяет преобразовывать значения в и из типа вашего класса или структуры. Дополнительные сведения и пример см. в разделе "Практическое руководство. Определение оператора преобразования".
Замечание
Значения, используемые с ключевым словом преобразования, должны быть допустимыми для целевого типа данных или возникает ошибка. Например, если вы пытаетесь преобразовать Long в Integer, значение Long должно находиться в допустимом диапазоне для Integer типа данных.
Осторожность
Указание CType для преобразования одного типа класса в другой приводит к ошибке во время выполнения, если исходный тип не является производным от целевого типа. Подобный сбой InvalidCastException вызывает исключение.
Однако если один из типов является определенной структурой или классом, и если вы CType определили для этой структуры или класса, преобразование может завершиться успешно, если оно соответствует требованиям вашего CType. Узнайте , как определить оператор преобразования.
Выполнение явного преобразования также называется приведение выражения к заданному типу данных или классу объектов.