Hal pertama yang perlu diperhatikan adalah VB.NET tidak memiliki analog langsung ke (type)instancemekanisme 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 shortke int, seperti yang dapat Anda lakukan dengan (int)cast C # . Tapi Anda bisa mentransmisikan dari sebuah IEnumerableke sebuah array, jika IEnumerablevariabel objek Anda benar-benar adalah sebuah Array. Dan tentu saja Anda dapat melakukan cast dari Objectke 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 asoperator C # .