TryCast-operator (Visual Basic)
Introducerar en typkonverteringsåtgärd som inte utlöser ett undantag.
Kommentarer
Om ett konverteringsförsök misslyckas CType
och DirectCast
båda utlöser ett InvalidCastException fel. Detta kan påverka programmets prestanda negativt. TryCast
returnerar Ingenting, så att du i stället för att behöva hantera ett möjligt undantag bara behöver testa det returnerade resultatet mot Nothing
.
Du använder nyckelordet TryCast
på samma sätt som du använder nyckelordet CType-funktion och DirectCast-operator. Du anger ett uttryck som det första argumentet och en typ att konvertera det till som det andra argumentet. TryCast
fungerar endast på referenstyper, till exempel klasser och gränssnitt. Det kräver en arvs- eller implementeringsrelation mellan de två typerna. Det innebär att en typ måste ärva från eller implementera den andra.
Fel och fel
TryCast
genererar ett kompilatorfel om det upptäcker att det inte finns någon arvs- eller implementeringsrelation. Men avsaknaden av ett kompilatorfel garanterar inte en lyckad konvertering. Om den önskade konverteringen minskar kan den misslyckas vid körning. Om detta händer TryCast
returnerar ingenting.
Konverteringsnyckelord
En jämförelse av nyckelorden för typkonvertering är följande.
Nyckelord | Datatyper | Argumentrelation | Körningsfel |
---|---|---|---|
CType-funktion | Alla datatyper | Utvidga eller begränsa konverteringen måste definieras mellan de två datatyperna | Kastar InvalidCastException |
DirectCast-operator | Alla datatyper | En typ måste ärva från eller implementera den andra typen | Kastar InvalidCastException |
TryCast |
Endast referenstyper | En typ måste ärva från eller implementera den andra typen | Returnerar ingenting |
Exempel
I följande exempel visas hur du använder TryCast
.
Function PrintTypeCode(ByVal obj As Object) As String
Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
If objAsConvertible Is Nothing Then
Return obj.ToString() & " does not implement IConvertible"
Else
Return "Type code is " & objAsConvertible.GetTypeCode()
End If
End Function