Megosztás a következőn keresztül:


TryCast operátor (Visual Basic)

Olyan típuskonvertálási műveletet vezet be, amely nem okoz kivételt.

Megjegyzések

Ha egy konvertálási kísérlet meghiúsul, CType és DirectCast mindkettő hibát jelez InvalidCastException . Ez hátrányosan befolyásolhatja az alkalmazás teljesítményét. TryCastSemmit nem ad vissza, így ahelyett, hogy egy lehetséges kivételt kellene kezelnie, csak a visszaadott eredményt Nothingkell tesztelnie.

A kulcsszót TryCast ugyanúgy használja, mint a CType függvényt és a DirectCast Operátor kulcsszót. Első argumentumként egy kifejezést és egy második argumentummá alakítandó típust kell megadnia. TryCast csak referenciatípusokon, például osztályokon és interfészeken működik. A két típus között öröklési vagy megvalósítási kapcsolat szükséges. Ez azt jelenti, hogy az egyik típusnak a másiktól kell örökölnie vagy implementálnia.

Hibák és hibák

TryCast fordítási hibát generál, ha azt észleli, hogy nincs öröklési vagy megvalósítási kapcsolat. A fordítóhibák hiánya azonban nem garantálja a sikeres átalakítást. Ha a kívánt átalakítás szűkül, futásidőben meghiúsulhat. Ha ez történik, TryCast semmit sem ad vissza.

Konverziós kulcsszavak

A típuskonvertálási kulcsszavak összehasonlítása a következő.

Kulcsszó Adattípusok Argumentumkapcsolat Futásidejű hiba
CType függvény Bármilyen adattípus A két adattípus közötti szélesítést vagy szűkítést kell definiálni Dob InvalidCastException
DirectCast operátor Bármilyen adattípus Az egyik típusnak örökölnie vagy implementálnia kell a másik típust Dob InvalidCastException
TryCast Csak referenciatípusok Az egyik típusnak örökölnie vagy implementálnia kell a másik típust Semmit nem ad vissza

Példa

Az alábbi példa a használat TryCastmódját mutatja be.

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

Lásd még