Konwersje niejawne i jawne (Visual Basic)
Niejawna konwersja nie wymagają specjalnej składni w kodzie źródłowym.W poniższym przykładzie Visual Basic niejawnie konwertuje wartość k na wartość zmiennoprzecinkowa pojedynczej precyzji, przed przypisaniem go do 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
Konwersja jawna wykorzystuje słowo kluczowe konwersji typu.Visual Basiczapewnia kilku takich słów, które wymuszone wyrażenia w nawiasach typu żądane dane.Te słowa kluczowe pełnią funkcje, ale kompilator generuje kod w tekście, więc wykonanie jest nieznacznie szybciej niż z wywołania funkcji.
Następujące rozszerzenia poprzedniego przykładu CInt słowa kluczowego konwertuje wartość q wróć do liczby całkowitej przed przypisaniem go do 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).
Słowa kluczowe konwersji
W poniższej tabeli przedstawiono dostępne konwersji słowa kluczowe.
Słowo kluczowe konwersja typu |
Wyrażenie jest konwertowany na typ danych |
Typy danych dopuszczalnego wyrażenia do konwersji |
CBool |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), String,Object |
|
CByte |
Dowolny typ numeryczne (łącznie z SByte i typy wyliczane), Boolean, String,Object |
|
CChar |
String, Object |
|
CDate |
String, Object |
|
CDbl |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CDec |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CInt |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CLng |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CObj |
Dowolny typ |
|
CSByte |
Dowolny typ numeryczne (łącznie z Byte i typy wyliczane), Boolean, String,Object |
|
CShort |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CSng |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CStr |
Any numeric type (including Byte, SByte, and enumerated types), Boolean, Char, Char array, Date,Object |
|
CType |
Określony typ po przecinku (,) |
Podczas konwersji na Typ danych elementarne (łącznie z tablicy typu podstawowe), takie same typy dopuszczalne odpowiadające im słowa kluczowego konwersji Podczas konwersji na złożony typ danych, interfejsy, które implementuje i klas, z których dziedziczy Podczas konwersji do klasy lub struktury, w którym zostały nadmiernie CType, że klasy lub struktury |
CUInt |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CULng |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
|
CUShort |
Dowolny typ numeryczne (łącznie z Byte, SByte, a wymienione typy), Boolean, String,Object |
Funkcja CType
Funkcja CType (Visual Basic) Działa na dwa argumenty.Pierwszy z nich to wyrażenie, które ma zostać przekonwertowane, a drugi jest miejsce docelowe danych typu lub obiekt klasy.Należy zauważyć, że pierwszy argument musi być wyrażenie nie może być typem.
CTypejest funkcji śródwierszowej, co oznacza skompilowany kod czyni konwersję, często bez generowania funkcji wywołania.Zwiększa to wydajność.
Dla porównania z CType z innego typu konwersji kluczowych, zobacz Operator DirectCast (Visual Basic) i Operator TryCast (Visual Basic).
Typy podstawowe
Poniższy przykład ilustruje użycie CType.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Typy złożone
Można użyć CType do konwersji wartości na złożone typy danych również, aby podstawowe typy.Można również użyć go do zmuszania klasy obiektu typu jego interfejsy, jak w poniższym przykładzie.
' 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)
Typy tablicy
CTypemożna także konwertować typów danych w tablicy, jak w poniższym przykładzie.
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
Aby uzyskać więcej informacji i przykładem, zobacz Tablica konwersji (Visual Basic).
Typy Definiowanie CType
Można zdefiniować CType na klasy lub struktury, które zostały zdefiniowane.Pozwala to na konwertowanie wartości typu klasy lub struktury.Aby uzyskać więcej informacji i przykładem, zobacz Jak: Definiowanie operatora konwersji (Visual Basic).
[!UWAGA]
Wartości używane ze słowem kluczowym konwersji musi być prawidłowa dla typu danych przeznaczenia lub występuje błąd.Na przykład, jeśli próba konwersji Long do Integer, wartość Long musi być prawidłowego zakresu dla Integer typu danych.
Przestroga |
---|
Określanie CType do konwersji z jedną klasę typu do innego kończy się niepowodzeniem w czasie wykonywania, jeśli typ źródła nie pochodzi od typu miejsca docelowego.Wyrzuca się takiej awarii InvalidCastException wyjątku. |
Jednakże jest jednym z typów struktury lub klasy, które zostały zdefiniowane i zdefiniowane CType do tej struktury lub klasy konwersji można pomyślnie, jeżeli spełnia ono wymagania użytkownika CType.See Jak: Definiowanie operatora konwersji (Visual Basic).
Konwersja jawna wykonywania jest również znany jako odlewania wyrażenie klasę typu danych danego obiektu.
Zobacz też
Zadania
Jak: konwertowanie obiektu na inny typ w języku Visual Basic
Rozwiązywanie problemów z typów danych (Visual Basic)
Informacje
Podsumowanie typów danych (Visual Basic)
Funkcje konwersji typu (Visual Basic)
Koncepcje
Konwersje między ciągi i innych typów (Visual Basic)