Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wprowadza operację konwersji typu na podstawie dziedziczenia lub implementacji.
Uwagi
DirectCast nie używa procedur pomocnika czasu wykonywania języka Visual Basic do konwersji, więc może zapewnić nieco lepszą wydajność niż CType podczas konwertowania na i z typu Objectdanych .
Używasz słowa kluczowego DirectCast podobnego do sposobu używania operatora CType i słowa kluczowego TryCast Operator . Należy podać wyrażenie jako pierwszy argument i typ, aby przekonwertować go na jako drugi argument.
DirectCast wymaga relacji dziedziczenia lub implementacji między typami danych dwóch argumentów. Oznacza to, że jeden typ musi dziedziczyć lub implementować drugi.
Błędy i błędy
DirectCast Generuje błąd kompilatora, jeśli wykryje, że nie istnieje żadna relacja dziedziczenia ani implementacji. Jednak brak błędu kompilatora nie gwarantuje pomyślnej konwersji. Jeśli żądana konwersja jest zawężana, może zakończyć się niepowodzeniem w czasie wykonywania. W takim przypadku środowisko uruchomieniowe zgłasza InvalidCastException błąd.
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 Operator | Dowolne typy danych | Konwersja rozszerzająca lub zawężająca musi być zdefiniowana między dwoma typami danych | Zgłasza InvalidCastException |
DirectCast |
Dowolne typy danych | Jeden typ musi dziedziczyć lub implementować inny typ | Zgłasza InvalidCastException |
| TryCast, operator | Tylko typy odwołań | Jeden typ musi dziedziczyć lub implementować inny typ | Zwraca nic |
Przykład
W poniższym przykładzie pokazano dwa zastosowania DirectCastelementu , które kończy się niepowodzeniem w czasie wykonywania, i jeden, który się powiedzie.
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 typ q czasu wykonywania to Double.
CType powodzenie, ponieważ Double można przekonwertować na Integer. Jednak pierwszy DirectCast kończy się niepowodzeniem w czasie wykonywania, ponieważ typ Double czasu wykonywania nie ma relacji dziedziczenia z elementem Integer, mimo że istnieje konwersja. Drugi DirectCast powiedzie się, ponieważ konwertuje typ Form na typ Control, z którego Form dziedziczy.