Bagikan melalui


TryCast Operator (Visual Basic)

Memperkenalkan operasi konversi jenis yang tidak melemparkan pengecualian.

Komentar

Jika konversi yang dicoba gagal, CType dan DirectCast keduanya melemparkan InvalidCastException kesalahan. Ini dapat berdampak buruk pada performa aplikasi Anda. TryCast mengembalikan Tidak Ada, sehingga alih-alih harus menangani kemungkinan pengecualian, Anda hanya perlu menguji hasil yang dikembalikan terhadap Nothing.

Anda menggunakan TryCast kata kunci dengan cara yang sama seperti Anda menggunakan Operator CType dan kata kunci Operator DirectCast . Anda memberikan ekspresi sebagai argumen pertama dan jenis untuk mengonversinya menjadi sebagai argumen kedua. TryCast hanya beroperasi pada jenis referensi, seperti kelas dan antarmuka. Ini membutuhkan pewarisan atau hubungan implementasi antara dua jenis. Ini berarti bahwa satu jenis harus mewarisi dari atau mengimplementasikan yang lain.

Kesalahan dan Kegagalan

TryCast menghasilkan kesalahan kompilator jika mendeteksi bahwa tidak ada pewarisan atau hubungan implementasi. Tetapi kurangnya kesalahan kompilator tidak menjamin konversi yang berhasil. Jika konversi yang diinginkan menyempit, itu bisa gagal pada waktu proses. Jika ini terjadi, TryCast mengembalikan Tidak Ada.

Kata Kunci Konversi

Perbandingan kata kunci konversi jenis adalah sebagai berikut.

Kata kunci Jenis data Hubungan argumen Kegagalan run-time
CType Operator Jenis data apa pun Melebarkan atau mempersempit konversi harus didefinisikan di antara dua jenis data Melempar InvalidCastException
DirectCast Operator Jenis data apa pun Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Melempar InvalidCastException
TryCast Jenis referensi saja Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Tidak Mengembalikan Apa-apa

Contoh

Contoh berikut menunjukkan cara menggunakan 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

Lihat juga