Hal pertama yang perlu diperhatikan adalah VB.NET tidak memiliki analog langsung ke (type)instance
mekanisme casting C # . Saya mengemukakan ini karena berguna sebagai titik awal dalam membandingkan dua operator VB.NET (dan mereka adalah operator, bukan fungsi, meskipun mereka memiliki semantik fungsi).
DirectCast()
lebih ketat daripada operator casting C #. Ini hanya memungkinkan Anda untuk melakukan cast ketika item yang sedang ditransmisikan adalah jenis yang Anda transmisikan. Saya yakin ini akan tetap membuka kotak jenis nilai, tetapi sebaliknya tidak akan melakukan konversi apa pun. Jadi, misalnya, Anda tidak dapat melakukan cast dari short
ke int
, seperti yang dapat Anda lakukan dengan (int)
cast C # . Tapi Anda bisa mentransmisikan dari sebuah IEnumerable
ke sebuah array, jika IEnumerable
variabel objek Anda benar-benar adalah sebuah Array
. Dan tentu saja Anda dapat melakukan cast dari Object
ke apa pun, dengan asumsi jenis instance objek Anda benar-benar berada di bawah jenis cast Anda di pohon warisan.
Ini diinginkan karena jauh lebih cepat . Ada lebih sedikit konversi dan pemeriksaan jenis yang perlu dilakukan.
CType()
tidak seketat operator casting C #. Ini akan melakukan hal-hal yang tidak dapat Anda lakukan dengan (int)
cast bergaya sederhana , seperti mengubah string menjadi integer. Ini memiliki kekuatan yang sama dengan memanggil Convert.To___()
di C #, di mana ___
tipe target pemain Anda.
Ini diinginkan karena sangat kuat. Namun, kekuatan ini datang dengan mengorbankan kinerja; itu tidak secepat DirectCast()
atau operator cor C # karena mungkin perlu melakukan banyak pekerjaan untuk menyelesaikan pemeran. Umumnya Anda harus memilih DirectCast()
saat Anda bisa.
Akhirnya, Anda melewatkan satu operator casting:, TryCast()
yang merupakan analog langsung ke as
operator C # .