Dela via


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

Se även