สิ่งแรกที่ควรทราบคือ VB.NET ไม่มี(type)instance
กลไกการหล่อแบบอะนาล็อกโดยตรงกับ C # ฉันนำสิ่งนี้มาใช้เนื่องจากมีประโยชน์เป็นจุดเริ่มต้นในการเปรียบเทียบตัวดำเนินการ VB.NET สองตัว (และเป็นตัวดำเนินการไม่ใช่ฟังก์ชันแม้ว่าจะมีความหมายของฟังก์ชันก็ตาม)
DirectCast()
เข้มงวดกว่าตัวดำเนินการหล่อ C # อนุญาตให้คุณร่ายได้ก็ต่อเมื่อไอเทมที่กำลังร่ายอยู่นั้นเป็นประเภทที่คุณกำลังร่าย ฉันเชื่อว่ามันจะยังคงยกเลิกการใช้งานประเภทค่า แต่ไม่เช่นนั้นจะไม่ทำการแปลงใด ๆ ดังนั้นสำหรับตัวอย่างเช่นคุณจะไม่สามารถส่งจากshort
ไปint
เช่นคุณสามารถด้วย C # (int)
หล่อ แต่คุณสามารถส่งจากIEnumerable
อาร์เรย์ได้หากIEnumerable
ตัวแปรออบเจ็กต์พื้นฐานของคุณเป็นArray
ไฟล์. และแน่นอนว่าคุณสามารถร่ายจากObject
อะไรก็ได้โดยสมมติว่าประเภทของอินสแตนซ์วัตถุของคุณอยู่ที่ไหนสักแห่งที่ต่ำกว่าประเภทการร่ายของคุณในแผนผังการสืบทอด
นี่เป็นที่พึงปรารถนาเพราะเร็วกว่ามาก มีการตรวจสอบ Conversion และประเภทน้อยกว่าที่จำเป็นต้องเกิดขึ้น
CType()
เข้มงวดน้อยกว่าตัวดำเนินการหล่อ C # มันจะทำสิ่งที่คุณไม่สามารถทำได้ด้วยการ(int)
ร่ายแบบธรรมดาเช่นการแปลงสตริงเป็นจำนวนเต็ม มันมีพลังมากพอ ๆ กับการเรียกConvert.To___()
ใน C # ซึ่ง___
เป็นประเภทเป้าหมายของการร่ายของคุณ
สิ่งนี้เป็นที่พึงปรารถนาเพราะมีพลังมาก อย่างไรก็ตามพลังนี้มาพร้อมกับต้นทุนของประสิทธิภาพ มันไม่เร็วเท่าDirectCast()
หรือตัวดำเนินการแคสต์ของ C # เพราะอาจต้องทำงานค่อนข้างมากในการแคสต์ให้เสร็จ โดยทั่วไปคุณควรเลือกDirectCast()
เมื่อทำได้
สุดท้ายคุณพลาดหนึ่งในผู้ประกอบการหล่อ: TryCast()
ซึ่งเป็นอะนาล็อกโดยตรงกับ C # 's as
ผู้ประกอบการ