Operator TryCast (Visual Basic)

Memperkenalkan operasi konversi jenis yang tidak memberikan pengecualian.

Keterangan

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

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

Kesalahan dan Kegagalan

TryCast menghasilkan kesalahan kompiler jika mendeteksi bahwa tidak ada hubungan pewarisan atau implementasi. Tetapi ketiadaan kesalahan kompiler tidak menjamin keberhasilan konversi. Jika konversi yang diinginkan menyempit, kegagalan pada durasi dapat terjadi. Jika hal ini terjadi, TryCast mengembalikan Nothing (Tidak Ada).

Kata Kunci Konversi

Berikut adalah perbandingan kata kunci konversi jenis.

Kata kunci Jenis data Hubungan argumen Kegagalan run-time
Fungsi CType Jenis data apa pun Konversi pelebaran atau penyempitan harus ditentukan antara dua jenis data Memberi InvalidCastException
Operator DirectCast Jenis data apa pun Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Memberi InvalidCastException
TryCast Jenis referensi saja Satu jenis harus mewarisi dari atau mengimplementasikan jenis lainnya Mengembalikan Nothing (Kosong)

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