استدلال الـنوع المحلي

برنامج التحويل البرمجي في Visual Basic 2008 يستخدم استنتاج النوع لتحديد أنواع البيانات للمتغيرات المحليه المعرفة بدون As الجملة. المحول البرمجي يستنتج نوع المتغير من نوع تعبير التهيئة. يمكّنك هذا من تعريف المتغيرات بدون توضيح النوع، كما هو موضح في المثال التالي. نتيجة للتعريفات ، كلا num1 و num2 هما نوعان قويان كأعداد صحيحة.

Public Sub inferenceExample()

    ' Using explicit typing.
    Dim num1 As Integer = 3

    ' Using local type inference.
    Dim num2 = 3

End Sub

ملاحظة

إذا لم تكن تريد num2 في المثال السابق ان يتم كتابته كـ Integer، يمكنك تحديد نوع آخر باستخدام تعريف مثل Dim num3 As Object = 3 أو Dim num4 As Double = 3.

استدلال الـنوع المحلي ينطبق على مستوى الإجراء. لا يمكن استخدامها لتعريف المتغيرات على مستوى الوحدة النمطية (داخل فئة أو بنية, وحدة نمطية أو واجهة ولكن ليس ضمن إجراء أو مقطع). num2 في المثال السابق كان حقل من فئة بدلاً من متغير محلي في إجراء, يؤدي التعريف الى خطأ مع Option Strict قيد التشغيل، ثم يحدد num2 كـ Object مع Option Strict غير مشغل. وبنفس الطريقة، لا يمكن الاشارة الى أنواع متغيرات ثابتة عندما Option Strict قيد التشغيل. مع Option Strict غير مشغل, نوع staticVar في Static staticVar = 5 هو Object. مع Option Strict قيد التشغيل ، التعريف يسبب حدوث خطأ محول برمجي.

استنتاج النوع ضدالربط المتأخر

التعليمات البرمجية التي تستخدم استنتاج النوع تمثل التعليمات البرمجية التي تعتمد على الربط المتأخر. ومع ذلك، استنتاج النوع يقوم بشدة بتنويع متغير بدلاً من تركه Object. يستخدم المحول البرمجي مُهيئ متغيّر لتحديد نوع المتغير في وقت التحويل برمجياً لإنتاج التعليمات البرمجية المرتبطه مبكراً. في المثال السابق، num2، مثل num1، تتم كتابتها كـ Integer.

سلوك متغيرات الربط المبكر يختلف من التي في متغيرات الربط المتأخر, للفترة التي التي يكون فيها النوع معروف فقط في وقت تشغيل. معرفة النوع مبكراً يمكّن برنامج التحويل البرمجي من تعريف المشاكل قبل التنفيذ. تخصيص الذاكرة بدقة, وتنفيذ تعديلات أخرى. الـربط المبكر يمكن أيضاً بيئة التطوير المتكاملة (IDE) Visual Basic ليوفر مساعدة التحسس الذكي حول أعضاء كائن. الـربط المبكر أيضاً مفضل للأداء. وهذا لأن كل البيانات مخزنة في متغير الربط المتأخر يجب لفها كـ نوع Object، وتوفير الوصول إلى الأعضاء من النوع وقت التشغيل يجعل البرنامج أبطأ.

أمثلة

استنتاج النوع يحدث عندما يتم تعريف متغير محلي بدون As الجملة و تهيئته. يستخدم المحول البرمجي نوع القيمة الأولية المعينة مثل نوع المتغير. على سبيل المثال، كل سطر من سطور التعليمات البرمجية التالية تعرف عن متغيّر من نوع String.

' Using explicit typing.
Dim name1 As String = "Springfield"

' Using local type inference.
Dim name2 = "Springfield"

الـتعليمات البرمجية التاليه توضح طريقتان مكافئتان لإنشاء صفيف من الأعداد الصحيحة.

' Using explicit typing.
Dim someNumbers1() As Integer = New Integer() {4, 18, 11, 9, 8, 0, 5}

' Using local type inference.
Dim someNumbers2 = New Integer() {4, 18, 11, 9, 8, 0, 5}

يكون ملائماً استخدام استنتاج النوع لتحديد نوع متغير عنصر تحكم الحلقة. في التعليمات البرمجية التالية, المحول البرمجي يشير الى أن number هو Integer لأن someNumbers2 من المثال السابق عبارة عن صفيف من أعداد صحيحة.

Dim total = 0
For Each number In someNumbers2
    total += number
Next

استنتاج النوع المحلي ليتم استخدامها في Using الكشوف لتأسيس نوع اسم المصدر, كما يوضح المثال التالي.

Using proc = New System.Diagnostics.Process
    ' Insert code to work with the resource.
End Using

نوع المتغير يمكن أيضاً أن يشار اليه من قيم الإرجاع من الدالات ، كما يوضح المثال التالي. كلا pList1 و pList2 هما صفائف من العمليات بسبب Process.GetProcesses يقوم بإرجاع صفيف من العمليات.

' Using explicit typing.
Dim pList1() As Process = Process.GetProcesses()

' Using local type inference.
Dim pList2 = Process.GetProcesses()

استنتاج الخيار

خيار جديد, Option Infer، يتيح تحديد ما إذا كان مسموحاً نوع الاستدلال المحلي في ملف معين. لـتمكين أو لحظر الخيار ، اكتب إحدى الكشوف التالية في بداية الملف.

Option Infer On

Option Infer Off

إذا لم تقم بتحديد قيمة لـ Option Infer في التعليمات البرمجية الخاصة بك برنامج التحويل البرمجي يفترض لـ Option Infer On لمشاريع تم إنشاؤها في Visual Basic 2008، و Option Infer Off لمشاريع تم ترقيتها من الإصدارات السابقة. للمزيد من المعلومات، راجع كشف خيار الاستدلال و/optioninfer.

ملاحظة

في حالة تعارض مجموعة القيمة لـ Option Infer في ملف مع مجموعة القيمة في IDE أو على خط الأوامر ، القيمة الموجودة في الملف لها الأسبقية.

Restrictions (تقييدات)

يمكن استخدام استنتاج النوع فقط للمتغيرات المحلية الغير ثابته; لا يمكن استخدامها لتحديد نوع حقول الفئة, الخصائص أو الدالات.

راجع أيضًا:

المرجع

عبارة Visual Basic) For Each...Next)

عبارة Visual Basic) For...Next)

كشف خيار الاستدلال

/optioninfer

المبادئ

أنواع مجهولة

الربط في وقت التشغيل و الربط مبكر

مقدمة حول LINQ في Visual Basic