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