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

هذه الوظائف يكون تحويلها البرمجي مضمن، بمعنى أن تعليمات التحويل البرمجية هي جزء من التعليمات البرمجية التي تقيم التعبير. أحياناً لا يوجد استدعاء لإجراء لإنجاز التحويل، الذي يعمل على تحسين الأداء. كل دالة تجبر التعبير إلى نوع بيانات معين.

CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)

جزء

  • expression
    مطلوبة. أي تعبير لنوع بيانات المصدر.

نوع بيانات قيمة الإرجاع

يحدد اسم الدالة نوع بيانات القيمة التي تقوم بإرجاعها, كما هو موضح في جدول التالي.

اسم الدالة

نوع بيانات الإرجاع.

نطاق وسيطة expression

CBool

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

أي Char صالح أو String أو تعبير رقمي.

CByte

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

0 إلى 255 (بلا إشارة) ; يتم تقريب الأجزاء الكسرية. 1

CChar

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

أي Char صالح أو تعبير String ; فقط أول حرف من String يتم تحويله; يمكن أن تكون القيمة 0 إلى 65535 (بلا إشارة).

CDate

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

أي تمثيل صالح لتاريخ و وقت.

CDbl

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

-308+1.79769313486231570E إلى 324-4.94065645841246544E- للقيم السالبة; 4.94065645841246544E-324 إلى 1.79769313486231570E+308 للقيم الموجية.

CDec

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

+\-335,950,543,593,337,264,514,162,228,79 للأرقام ذات الحجم الصفري, بمعنى، أرقام دون ‏‫منازل عشرية‬. بالنسبة للأرقام ذات 28 منزلة عشرية، يكون النطاق +/-7.9228162514264337593543950335 . أصغر رقم ممكن غير الصفر هو 0.0000000000000000000000000001 (+/-1E-28).

CInt

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

2,147,483,648- إلى 2,147,483,647; يتم تقريب الأجزاء الكسرية. 1

CLng

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

9,223,372,036,854,775,808- إلى 9,223,372,036,854,775,807; يتم تقريب الأجزاء الكسرية. 1

CObj

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

أي تعبير صالح.

CSByte

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

128- إلى 127; يتم تقريب الأجزاء الكسرية. 1

CShort

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

32,768- إلى 32,767; يتم تقريب الأجزاء الكسرية. 1

CSng

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

3.402823E+38- إلى 1.401298E-45- للقيم السالبة; 1.401298E - 45 إلى 3.402823E+38 للقيم الموجبة.

CStr

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

يرجع إلى CStr تعتمد على الوسيطة expression. انظر إرجاع القيم للدالة CStr

CUInt

نوع بيانات UInteger

0 إلى 4,294,967,295 (بلا إشارة) ; يتم تقريب الأجزاء الكسرية. 1

CULng

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

0 إلى 18,446,744,073,709,551,615 (بلا إشارة) ; يتم تقريب الأجزاء الكسرية. 1

CUShort

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

0 إلى 65,535 (بلا إشارة) ; يتم تقريب الأجزاء الكسرية. 1

1 الأجزاء الكسرية يمكن أن تخضع إلى نوع خاص من التقريب يسمى التقريب المصرفي. لمزيد من المعلومات، راجع "ملاحظات"

ملاحظات

كقاعدة, يجب أن تستخدم دوال Visual Basic لتحويل النوع تفضيلا إلى أساليب .NET Framework مثل ToString()، إما على الفئة Convert أو على فئة أو بنية فردية النوع. تم تصميم دوال Visual Basic للتفاعل الأمثل مع التعليمات البرمجية لـ Visual Basic، هي أيضاً تجعل مصدر التعليمات البرمجية أقصر وأسهل للقراءة. بالإضافة إلى ذلك، أساليب التحويل .NET Framework لا تقوم دائماً بإنتاج نفس النتائج كدوال Visual Basic، على سبيل المثال عند تحويل Boolean إلى Integer. لمزيد من المعلومات، راجع استكشاف أخطاء أنواع البيانات.

السلوك

  • قسرية. بشكل عام، يمكنك استخدام دوال تحويل نوع البيانات لتجبر نتيجة العملية إلى نوع بيانات محدد بدلاً من نوع البيانات الافتراضي. على سبيل المثال، استخدم CDec لتجبر الحساب العشري في حالات حيث أحادي الدقة أو الدقة المزدوجة أو حساب العدد الصحيح تجري عادةً.

  • التحويلات الفاشلة. إذا كان expression الذي تم تمريره إلى الدالة خارج نطاق نوع البيانات الذي سوف يتم تحويله إليه, يحدث OverflowException.

  • الأجزاء الكسرية. عند تحويل قيمة غير مكتملة إلى نوع متكامل, دوال تحويل العدد الصحيح (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng، و CUShort) تقوم بإزالة الجزء الكسري ثم تقرب القيمة إلى أقرب عدد صحيح.

    إذا كان الجزء الكسري 0.5 تماماً, دوال تحويل العدد الصحيح تقربه إلى أقرب رقم صحيح زوجي. على سبيل المثال، يتم تقريب 0.5 إلى 0، 1.5 و 2.5 كلاهما يتم تقريبهما إلى 2. وهي ما تعرف في بعض الأحيان التقريب المصرفي, والغرض منه هو للتعويض عن التحيز الذي يمكن أن يتراكم عند إضافة العديد من مثل هذه الأرقام معا.

    CInt و CLng تختلف عن دوال Int و Fix, التي تقوم باقتطاع بدلاً من تقريب الجزء الكسري لرقم. أيضاً،Fix و Int دوماً تقوم بإرجاع قيمة من نفس نوع البيانات الذي قمت بتمريره.

  • تحويلات التاريخ/الوقت. استخدم الدالة IsDate لتحديد ما إذا كانت القيمة يمكن تحويلها إلى تاريخ و وقت. CDate يتعرف على القيم الحرفية لتاريخ و القيم الحرفية لوقت ولكن ليس القيم الرقمية. لتحويل قيمة Date في Visual Basic 6.0 إلى قيمة Date في ‏‫Visual Basic 2005 أو الإصدارات الأحدث، يمكنك استخدام الأسلوب DateTime.FromOADate.

  • قيم التاريخ/الوقت المحايدة. يحتوي نوع بيانات Date في (Visual Basic) دوماً على معلومات التاريخ والوقت. لأغراض تحويل النوع, Visual Basic يعتبر 1/1/0001 (1 يناير من السنة 1) قيمة محايدة للتاريخ, و 00: 00: 00 (منتصف الليل) قيمة محايدة للوقت. إذا قمت بتحويل قيمة Date إلى سلسلة، لا يتضمن CStr قيم محايدة في السلسلة الناتجة. على سبيل المثال، إذا قمت بتحويل #January 1, 0001 9:30:00# إلى سلسلة، تكون النتيجة "9:30:00 ص"; معلومات التاريخ تم قمعها. على الرغم من ذلك، معلومات التاريخ لا تزال موجودة في قيمة Date الأصلية و يمكن استردادها بدوال مثل دالة DatePart.

  • حساسية الثقافة. دوال تحويل النوع المشتملة على سلاسل تؤدي تحويلات استناداً على إعدادات الثقافة الحالية للتطبيق. على سبيل المثال، يتعرف CDate على تنسيقات التاريخ طبقًا إلى الإعدادات المحلية للنظام الخاص بك. يجب توفير اليوم, الشهر, والسنة بالترتيب الصحيح للإعدادات المحلية الخاصة بك, أو قد لا يفسر التاريخ بشكل صحيح. لا يتم التعرف على تنسيق التاريخ الطويل إذا كان يحتوي على سلسلة يوم-من-الأسبوع ، مثل "الأربعاء".

    إذا كنت بحاجة إلى التحويل من أو إلى تمثيل سلسلة لقيمة في تنسيق يختلف عن التنسيق المحدد بلإعدادات المحلية الخاصة بك, لا يمكنك استخدام دوال تحويل النوع في Visual Basic. لتقوم بذلك، استخدم الأساليب ToString(IFormatProvider) و Parse(String, IFormatProvider) من نوع تلك القيمة. على سبيل المثال، استخدم Double.Parse عند تحويل سلسلة إلى Double، و استخدم Double.ToString عند تحويل قيمة من نوع Double إلى سلسلة.

دالة CType

دالة CType تأخذ وسيطة ثانية typename، و تجبر expression إلى typename، حيث typename يمكن أن يكون أي نوع بيانات، بنية، الفئة، أو الواجهة حيث يوجد تحويل صالح.

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

مثال CBool

يستخدم المثال التالي الدالة CBool لتحويل التعابير إلى قيم Boolean. إذا تم تقييم تعبير إلى قيمة غير صفرية، CBool يقوم بإرجاع True؛ وإلا، يقوم بإرجاع False.

Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)

مثال CByte

يستخدم المثال التالي الدالة CByte لتحويل تعبير إلى Byte.

Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)

مثال CChar

يستخدم المثال التالي الدالة CChar لتحويل أول حرف من تعبير String إلى نوع Char.

Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)

وسيطة الإدخال إلى CChar يجب أن تكون من نوع Char أو String. لا يمكنك استخدام CChar لتحويل رقم إلى حرف، لأن CChar لا يمكنها قبول نوع بيانات رقمية. المثال التالي يحصل على رقم يمثل نقطة الرمز (رمز الحرف) و يقوم بتحويلها إلى الأحرف المطابقة. يستخدم الدالة InputBox للحصول على سلسلة الأرقام, CInt لتحويل السلسلة إلى نوع Integer، و ChrW لتحويل الرقم إلى نوع Char.

Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)

مثال CDate

يستخدم المثال التالي الدالة CDate لتحويل سلسلة إلى قيم Date. بشكل عام، تضمين التعليمات البرمجية للتواريخ والأوقات كسلاسل (كما هو موضح في هذا المثال) غير مستحسن. بدلاً من ذلك، استخدام أحرف التاريخ و أحرف الوقت مثل #Feb 12 1969 # و # 4:45:23 م #.

Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)

مثال CDbl

Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)

مثال CDec

يستخدم المثال التالي الدالة CDec لتحويل قيمة رقمية إلى Decimal.

Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)

مثال CInt

يستخدم المثال التالي الدالة CInt لتحويل قيمة إلى Integer.

Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)

مثال CLng

يستخدم المثال التالي الدالة CLng لتحويل قيم إلى Long.

Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)

مثال CObj

يستخدم المثال التالي الدالة CObj لتحويل قيمة رقمية إلى Object. المتغير Object يحتوي فقط على مؤشر من أربع بايت، مما يشير إلى القيمة Double التي تم تعيينها إليه.

Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)

مثال CSByte

يستخدم المثال التالي الدالة CSByte لتحويل قيمة رقمية إلى SByte.

Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)

مثال CShort

يستخدم المثال التالي الدالة CShort لتحويل قيمة رقمية إلى Short.

Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)

مثال CSng

يستخدم المثال التالي الدالة CSng لتحويل قيم إلى Single.

Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)

مثال CStr

يستخدم المثال التالي الدالة CStr لتحويل قيمة رقمية إلى String.

Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)

يستخدم المثال التالي الدالة CStr لتحويل قيم Date إلى قيم String

Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)

يقدم CStr دائماً قيم Date في التنسيق القصير القياسي للإعدادات المحلية على سبيل المثال، "6/15/2003 4:35:47 م". ومع ذلك، CStr يقمع القيم المحايدة 1/1/0001 للتاريخ و 00: 00: 00 للوقت.

للحصول على مزيد من التفاصيل حول القيم التي يتم إرجاعها بواسطة CStr، راجع إرجاع القيم للدالة CStr.

مثال CUInt

يستخدم المثال التالي الدالة CUInt لتحويل قيمة رقمية إلى UInteger.

Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)

مثال CULng

يستخدم المثال التالي الدالة CULng لتحويل قيمة رقمية إلى ULong.

Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)

مثال CUShort

يستخدم المثال التالي الدالة CUShort لتحويل قيمة رقمية إلى UShort.

Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)

راجع أيضًا:

المرجع

دالات التحويل (Visual Basic)

Asc

AscW

Chr

ChrW

Int

Fix

Format

Hex

Oct

Str

Val

موارد أخرى

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