DirectCast — Operator (Visual Basic)
Wprowadza oparte na dziedziczenie lub realizacji operacji konwersji typu.
Uwagi
DirectCastnie używać języka Visual Basic pomocnika run-time procedur konwersji, co zapewnia nieco większą wydajność niż CType podczas konwersji z typu danych i Object.
Za pomocą DirectCast podobny sposób można użyć słowa kluczowego CType — Funkcja (Visual Basic) i TryCast — Operator (Visual Basic) słowa kluczowego.Musisz wpisać wyrażenie jako pierwszy argument i typu do konwertowania jako drugi argument.DirectCastwymaga relacji dziedziczenia lub wykonania między typami danych z dwóch argumentów.Oznacza to, że jeden typ musi dziedziczyć lub wykonania drugiej.
Błędy i błędy
DirectCastgeneruje błąd kompilatora, jeśli wykryje, że istnieje żadnej relacji dziedziczenia lub wykonania.Jednak brak błąd kompilatora nie gwarantuje pomyślne konwersji.Jeśli żądany rodzaj konwersji jest zawężenie, może nie działać w czasie wykonywania.Jeśli tak się stanie, aparat plików wykonywalnych wyrzuca InvalidCastException błąd.
Słowa kluczowe konwersji
Porównanie wpisz słowa kluczowe konwersji jest następująca:
Słowo kluczowe |
Typy danych |
Argument relacji |
Błąd czasu wykonywania |
Wszystkie typy danych |
Rozszerzenie lub zwężenie konwersji należy zdefiniować między typami danych dwóch |
WyrzucaInvalidCastException |
|
DirectCast |
Wszystkie typy danych |
Jeden typ musi dziedziczyć lub wdrożenia innego typu |
WyrzucaInvalidCastException |
Tylko typy odwołań |
Jeden typ musi dziedziczyć lub wdrożenia innego typu |
ZwracaNothing (Visual Basic) |
Przykład
Poniższy przykład ilustruje dwa rodzaje zastosowania DirectCast, taką, która kończy się niepowodzeniem w czasie wykonywania i jeden powiedzie się.
Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)
W poprzednim przykładzie typu run-time q jest Double.CTypepowiedzie się, ponieważ Double mogą być konwertowane na Integer.Jednakże pierwszy DirectCast kończy się niepowodzeniem w czasie wykonywania, ponieważ typ run-time Double ma ono żadnej relacji dziedziczenia z Integer, mimo że istnieje konwersja.Drugi DirectCast powiedzie się, ponieważ są konwertowane typu Form do typu Control, z którego Form dziedziczy.