تحويلات ضمنية و صريحة

التحويل الضمني لا يتطلب أي بناء جملة خاص في التعليمات البرمجية المصدر. في المثال التالي Visual Basic تحويل ضمنياً قيمة k إلى قيمة أحادي الدقة للفاصلة العائمة قبل تعيينها إلى q.

Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k

الـتحويل الصريح يستخدم كلمة أساسية تحويل نوع . Visual Basic يوفر عدة مثل الكلمات الأساسية التي تحول تعبير في أقواس نوع البيانات المطلوب. تعمل هذه الكلمات الأساسية مثل دالات و لكن المحول البرمجي ينشئ التعليمات البرمجية مصطفة حتى يتم تنفيذ أسرع قليلاً من اتصال دالة.

في الملحق التالي للمثال السابق، الكلمة الأساسية CInt تحول قيمة q مرة أخرى إلى عدد صحيح قبل تعيينها إلى k.

' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).

كلمات التحويل الأساسية

يعرض الجدول التالي الكلمات الأساسية التحويل المتوفره.

الـكلمة الأساسية تحويل النوع

تحويل تعبير إلى نوع بيانات

أنواع بيانات المسموح بها لتعبير يتم تحويله

CBool

نوع بيانات القيمة المنطقية في (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، String, Object

CByte

نوع بيانات Byte في (Visual Basic)

أي نوع عددي (بما في ذلك SByteو أنواع التعداد ) ، Boolean، String, Object

CChar

نوع بيانات الحرف (Visual Basic)

String, Object

CDate

نوع بيانات Date في (Visual Basic)

String, Object

CDbl

نوع بيانات مزدوج (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CDec

نوع بيانات العشري (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CInt

نوع بيانات الأعداد الصحيحة (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CLng

نوع بيانات Long في (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CObj

نوع البيانات كائن

أي نوع

CSByte

نوع بيانات SByte في (Visual Basic)

أي نوع عددي (بما في ذلك Byteو أنواع التعداد ) ، Boolean، String, Object

CShort

نوع بيانات Short في (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CSng

نوع البيانات المفرد (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CStr

نوع بيانات السلسلة (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, CharChar الصفيف , Date,Object

CType

نوع المحددة الذي يتبع الفاصلة (,)

عند التحويل الى نوع البيانات الأولية (بما في ذلك صفيف لنوع الأولية), نفس الأنواع كما هو مسموح للكلمة الأساسية التحويل المطابق

عند التحويل الى نوع بيانات مركب , الواجهات التي يطبّقها و الفئات التي يرث منها

عند التحويل إلى فئة أو بنية حيث قمت بتحميل بشكل زائد CType، هذه الفئة أو البنية

CUInt

نوع بيانات UInteger

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CULng

نوع بيانات ULong في (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

CUShort

نوع بيانات UShort في (Visual Basic)

أي نوع عددي (بما في ذلك Byte, SByte، و أنواع التعداد ) ، Boolean, StringObject

دالة CType

دالة CType يعمل على وسيطتين اثنتين. الـأول هو التعبير الذي سيتم تحويله و الثاني هو نوع البيانات الوجهة أو فئة الكائن. لاحظ أن الوسيط الأول يجب أن يكون تعبير وليس نوع .

CType هو دالة مضمنة ، مما يعني تالعليمات البرمجية المترجمة تقوم بالتحويل ، غالباً بدون إنشاء اتصال دالة. يؤدي ذلك إلى تحسين الأداء.

للحصول على مقارنة بين CType و كلمات أساسية أخرى لتحويل النوع, راجع عامل DirectCast و عامل التشغيل TryCast.

أنواع أولية

يوضح المثال التالي استخدام CType.

k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)

أنواع مركبة

يمكنك استخدام CType لتحويل القيم إلى أنواع بيانات مركبة و أيضاً الى أنواع أولية. يمكنك أيضاً استخدامه لتحويل فئة كائن إلى نوع إحدى الواجهات الخاصة به كما هو موضح في المثال التالي.

' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)

أنواع الصفيف

CType يمكنه أيضاً تحويل أنواع بيانات الصفيف كما هو موضح في المثال التالي.

Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
    ' obArray can be converted to classV.
    v = CType(obArray, classV())
End If

لمزيد من المعلومات وللحصول على مثال راجع تحويلات الصفيف.

أنواع تعرف CType

يمكنك تعريف CType في فئة أو بنية التي قمت بتعريفها. يسمح لك هذا إلى تحويل القيم إلى و من نوع الفئة أو البنية الخاصة بك. لمزيد من المعلومات وللحصول على مثال راجع كيفية القيام بما يلي: تعريف تحويل عامل التشغيل.

ملاحظة

يجب أن تكون القيم المستخدمة بواسطة الكلمة الأساسية المحوله صالحه لنوع بيانات الوجهة ، وإلا سيحدث خطأ. على سبيل المثال، إذا حاولت تحويل Long إلى Integer، قيمة Long يجب أن تكون ضمن النطاق الصالح لنوع البيانات Integer .

ملاحظة تنبيهتنبيه

تحديدCType لتحويل من نوع فئة واحدة إلى آخر يفشل في وقت التشغيل إذا كان نوع المصدر لا ينحدر من نوع الوجهة. يطرح مثل هذا الفشل استثناءInvalidCastException .

ومع ذلك، إذا كان أحد الأنواع بنية أو فئة قمت بتعريفها و قمت بتعريف CType على تلك البنية أو الفئة التحويل يمكن أن ينجح إذا كان يفي بمتطلبات CType الخاص بك. انظر كيفية القيام بما يلي: تعريف تحويل عامل التشغيل

تنفيذ تحويل صريح يُعرف أيضاً اختيار تعبير إلى فئة بيانات أو نوع كائن معطاة.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تحويل الكائن إلى نوع آخر في Visual Basic

استكشاف أخطاء أنواع البيانات

المرجع

خلاصة نوع بيانات (Visual Basic)

دوال تحويل النوع

المبادئ

تغييرات القيمة أثناء التحويلات

عمليات التحويل بين سلاسل وأنواع أخرى

البرمجة اللا نوعية في Visual Basic

موارد أخرى

نوع التحويلات في Visual Basic

البنيات