عامل DirectCast
يقدم عملية تحويل نوع استناداً على توريث أو تنفيذ.
ملاحظات
DirectCast لا يستخدم إجراءات مساعد وقت التشغيل في تحويل Visual Basic, بحيث يمكن أن يوفر أداء أفضل إلى حد ما من CType عند التحويل من نوع بيانات Object.
استخدم الكلمة الأساسية DirectCast بنفس الطريقة التي تستخدم الكلمة الأساسية دالة CType و عامل التشغيل TryCast. توّفر تعبير كوسيطة الأولى و نوع لتحويله بوصفها وسيطة الثانية. DirectCast يتطلب علاقة توريث أو تطبيق بين أنواع بيانات الوسيطتين. وهذا يعني أنه يجب أن ترث من نوع واحد أو تطبق الأخرى.
الفشل و الأخطاء
DirectCast ينشئ خطأ في المحول البرمجي إذا اكتشف وجود أية علاقة توريث أو تطبيق. ولكن عدم وجود خطأ في المترجم لا يضمن تحويلاً ناجحاً. إذا كان تضييق التحويل مطلوباً, فقد يفشل في تشغيل الوقت. إذا حدث هذا، وقت التشغيل يطرح خطأ InvalidCastException.
كلمات التحويل الأساسية
مقارنة بين تحويل نوع الكلمات الأساسية كما يلي.
Keyword |
أنواع البيانات |
علاقة وسيط |
فشل وقت التشغيل |
---|---|---|---|
أي أنواع بيانات |
يجب تعريف التوسيع أو تضييق التحويل بين أنواع بيانات |
يطرح InvalidCastException |
|
DirectCast |
أي أنواع بيانات |
يجب أن ترث من نوع واحد أو تطبيق نوع آخر |
يطرح InvalidCastException |
فقط أنواع المرجع |
يجب أن ترث من نوع واحد أو تطبيق نوع آخر |
يرجع لا شيء (Visual Basic). |
مثال
يوضح المثال التالي استخدامات اثنين من DirectCast، احدهما الذي فشل في وقت التشغيل والآخر نجح.
Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)
في المثال السابق، نوع وقت التشغيل q هو Double. CType نجاح لأن Double يمكن تحويله إلى Integer. ومع ذلك، أول DirectCast فشل في وقت التشغيل لأن نوع وقت التشغيل Double لا توجد علاقة توريث مع Integer، على الرغم من وجود إجراء تحويل. الثانيDirectCast نجح لأن ذلك التحويل من نوع Form لنوع Control، حيث يرث Form .