Udostępnij za pośrednictwem


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 typenameprogram , 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, CDbli CInt , 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 konwertowania Object 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 expressionInteger 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.

Zobacz też