CType — Funkcja (Visual Basic)
Zwraca wynik jawnego konwertowania wyrażenia na określony typ danych, obiekt, strukturę, klasę lub interfejs.
Składnia
CType(expression, typename)
generatora
expression
Dowolne prawidłowe wyrażenie. Jeśli wartość expression
elementu znajduje się poza zakresem dozwolonym przez typename
program , program Visual Basic zgłasza wyjątek.
typename
Dowolne wyrażenie, które jest legalne As
w klauzuli w Dim
instrukcji, czyli nazwę dowolnego typu danych, obiektu, struktury, klasy lub interfejsu.
Uwagi
Napiwek
Do przeprowadzenia konwersji typu można również użyć następujących funkcji:
- Funkcje konwersji typów, takie jak
CByte
,CDbl
iCInt
, które wykonują konwersję na określony typ danych. Aby uzyskać więcej informacji, zobacz Funkcje konwersji typów. - Operator emisji bezpośredniej lub operator trycast. Te operatory wymagają, aby jeden typ dziedziczył lub implementuje inny typ. Mogą one zapewnić nieco lepszą wydajność niż
CType
podczas konwertowaniaObject
na i z typu danych.
CType
jest kompilowany w tekście, co oznacza, że kod konwersji jest częścią kodu, który ocenia wyrażenie. W niektórych przypadkach kod działa szybciej, ponieważ żadne procedury nie są wywoływane w celu przeprowadzenia konwersji.
Jeśli żadna konwersja nie jest zdefiniowana z do typename
(na przykład z expression
Integer
do Date
), program Visual Basic wyświetla komunikat o błędzie czasu kompilacji.
Jeśli konwersja nie powiedzie się w czasie wykonywania, zostanie zgłoszony odpowiedni wyjątek. Jeśli konwersja zawężania nie powiedzie się, OverflowException jest to najbardziej typowy wynik. Jeśli konwersja jest niezdefiniowana, zgłaszany InvalidCastException element. Na przykład może się to zdarzyć, jeśli expression
jest typu Object
, a jego typ czasu wykonywania nie ma konwersji na typename
.
Jeśli typ expression
danych lub jest zdefiniowaną klasą lub typename
strukturą, możesz zdefiniować CType
dla tej klasy lub struktury jako operator konwersji. To sprawia, że CType
działa jako przeciążony operator. Jeśli to zrobisz, możesz kontrolować zachowanie konwersji do i z klasy lub struktury, w tym wyjątki, które mogą zostać zgłoszone.
Słowa kluczowe konwersji
Porównanie słów kluczowych konwersji typów jest następujące.
Słowo kluczowe | Typy danych | Relacja argumentów | Niepowodzenie czasu wykonywania |
---|---|---|---|
CType |
Dowolne typy danych | Konwersja rozszerzająca lub zawężająca musi być zdefiniowana między dwoma typami danych | Zgłasza InvalidCastException |
Operator DirectCast | Dowolne typy danych | Jeden typ musi dziedziczyć lub implementować inny typ | Zgłasza InvalidCastException |
Emisja próbna | Tylko typy odwołań | Jeden typ musi dziedziczyć lub implementować inny typ | Zwraca nic |
Przeciążenie
Operator CType
może być również przeciążony na klasie lub strukturze zdefiniowanej poza kodem. Jeśli kod konwertuje się na taką klasę lub strukturę, upewnij się, że rozumiesz zachowanie operatora CType
. Aby uzyskać więcej informacji, zobacz Procedury operatorów.
Konwertowanie obiektów dynamicznych
Konwersje typów obiektów dynamicznych są wykonywane przez konwersje dynamiczne zdefiniowane przez użytkownika, które używają TryConvert metod lub BindConvert . Jeśli pracujesz z obiektami dynamicznymi, użyj CTypeDynamic metody , aby przekonwertować obiekt dynamiczny.
Przykład
W poniższym przykładzie użyto CType
funkcji , aby przekonwertować wyrażenie na Single
typ danych.
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
Aby uzyskać dodatkowe przykłady, zobacz Niejawne i jawne konwersje.