النطاق في Visual Basic

نطاق العنصر المُعلَن هو المجموعة كل التعليمات البرمجية التي يمكن الرجوع إليها دون تأهيل اسمها أو جعله متوفرا خلال استيراد كشف (مساحة الاسم و نوع NET.). العنصر يمكن أن يكون لديه نطاق في أحد المستويات التالية:

المستوى

الوصف

نطاق القطعة

متوفر فقط ضمن التعليمات البرمجية للقطعة التي يتم تعريفه فيها

نطاق الإجراء

متوفر لكل التعليمات البرمجية ضمن الإجراء الذي تم التصريح فيها

نطاق الوحدة النمطية

تتوفر لكل التعليمات البرمجية داخل وحدة نمطية، فئة، أو بناء الذي يتم فيها تعريف

نطاق مساحة الاسم

متوفر لكل التعليمات البرمجية في الإجراء الذي تم التصريح فيها

هذه المستويات من تقدم النطاق من narrowest (القطعة) إلى الأكبر (مساحة الاسم) ، حيث نطاق narrowest يعني أصغر مجموعة من التعليمات البرمجية التي يمكن أن يشير إلى عنصر دون تأهيل. للحصول على مزيد من المعلومات ، راجع "مستويات النطاق" على هذه الصفحة.

تحديد النطاق و تعريف المتغيرات

تحدد نطاق عنصر عندما تقوم بتعريفه. يمكن أن تعتمد النطاق على العوامل التالية:

  • المنطقة (قطعة أو إجراء, وحدة نمطية ، فئة أو بنية) الذي تقوم بتعريف عنصر فيه

  • مساحة الاسم التي تحتوي على تعريف العنصر

  • مستوى الوصول الذي تصرّح له العنصر

استخدم العناية عند تعريف المتغيرات التي تحتوي على نفس الاسم ولكن مختلفة النطاق لأنه قد يؤدي القيام بذلك إلى نتائج غير متوقعة. لمزيد من المعلومات، راجع مراجع لعناصر معرّفه.

مستويات النطاق

يعتبر عنصر البرمجة متوفر خلال الإقليم الذي تقوم بتعريفه عليه. يمكن أن تشير كل التعليمات البرمجية في نفس المنطقة إلى عنصر بدون تأهيل اسمه.

نطاق القطعة

القطعة هي مجموعة من العبارات محاطة ضمن بدء و إنهاء عبارات التعريف كما يلي:

  • Do و Loop

  • For [Each ] و Next

  • If و End If

  • Select و End Select

  • SyncLock و End SyncLock

  • Try و End Try

  • While و End While

  • With و End With

إذا قمت بتعريف متغير داخل قطعة يمكن استخدامه فقط ضمن ذلك الكتلة. في المثال التالي نطاق متغير العدد الصحيحcube هو القطعة بين If و End If، و لم يعد يمكنك الإشارة إلى cube عند تمرير التنفيذ خارج القطعة.

If n < 1291 Then
    Dim cube As Integer
    cube = n ^ 3
End If

ملاحظة

حتى إذا كان نطاق متغير محدودة للقطعة ، عمر المفتاح الخاص به ما زال مستمرا حتى نهاية إجراء بأكمله. إذا قمت بإدخال الكتلة أكثر من مرة واحدة أثناء الإجراء، كل قطعة تحتفظ بقيم متغيراتها. إلى لتجنب نتائج غير متوقعة في مثل هذه حالة, من الحكمة تهيئة متغيرات القطعة في بداية الكتلة.

نطاق الإجراء

العنصر المعّرف ضمن إجراء غير متوفر خارج ذلك الإجراء. فقط الإجراء الذي يحتوي على التعريف يمكن استخدامه. تعرف المتغيرات في هذا المستوى أيضاً باسم المتغيرات المحلية. تقوم بتعريفه عليها بواسطة عبارة Vsual Basic) Dim)، مع أو بدون الكلمة الأساسية ثابت (Visual Basic) .

نطاق الإجراء والمنع المرتبطة بشكل كبير. إذا قمت بتعريف متغير داخل إجراء ولكن خارج القطعة أي داخل ذلك الإجراء يمكنك اعتبار المتغير أنه يحتوي على نطاق القطعة حيث الكتلة هي الإجراء بأكمله.

ملاحظة

كل العناصر المحلية حتى ولو كانت متغيرات Static تكون خاصة للإجراء الذي تظهر فيه. يتعذر تعريف أي عنصر باستخدام الكلمة الأساسية عام (Visual Basic) داخل إجراء.

نطاق الوحدة النمطية

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

عند إنشاء تعريف في مستوى الوحدة النمطية ، مستوى الوصول الذي تختاره يحدد النطاق. مساحة الاسم يحتوي على وحدة نمطية أو فئة أو بنية يؤثر على النطاق.

العناصر التي تقوم بتعريف مستوى وصولخاص (Visual Basic) تتوفر لكل إجراء في الوحدة النمطية ولكن ليس على أي تعليمات برمجية في الوحدة النمطية المختلفة. العبارة Dim في مستوى الوحدة النمطية افتراضية لـ Private إذا لم تستخدم أي كلمة أساسية لمستوى الوصول. ومع ذلك، يمكنك جعل نطاق و مستوى الوصول أكثر وضوحًا باستخدام الكلمة الأساسية Private في العبارة Dim .

في المثال التالي كل الإجراءات المعرفة في الوحدة النمطية التي يمكن أن تشير إلى متغير سلسلة strMsg. عندما يتم استدعاء الإجراء الثاني يعرض المحتويات سلسلة متغير strMsg في مربع حوار.

' Put the following declaration at module level (not in any procedure).
Private strMsg As String
' Put the following Sub procedure in the same module.
Sub initializePrivateVariable()
    strMsg = "This variable cannot be used outside this module."
End Sub
' Put the following Sub procedure in the same module.
Sub usePrivateVariable()
    MsgBox(strMsg)
End Sub

نطاق مساحة الاسم

في حالة التصريح عن عنصر في مستوى الوحدة النمطية باستخدام الكلمة الأساسية صديق (Visual Basic) أو عام (Visual Basic) تصبح متوفرة لكافة الإجراءات خلال مساحة الاسم التي تم التصريح عن العنصر فيها. مع التغيير التالي للمثال السابق، متغير السلسلةstrMsg يمكن الإشارة إليه بواسطة التعليمات البرمجية في أي مكان في مساحة الاسم الخاصة بالتعريف.

' Include this declaration at module level (not inside any procedure).
Public strMsg As String

يتضمن نطاق مساحة الاسم مساحات الأسماء المتداخلة. عنصر متوفر من داخل مساحة الاسم أيضاً متوفر من ضمن أي مساحة اسم داخل مساحة الاسم ذلك.

إذا لم يحتوي المشروع على أي كشف مساحة الاسمs، كل شيء في المشروع موجود في نفس مساحة الاسم. في هذه الحالة، يمكن اعتبار مساحة اسم النطاق من أنها نطاق مشروع. العناصر Public في الوحدة النمطية، فئة أو بنية تتوفر أيضاً لأي مشروع تراجع المشاريع الخاصة بهم.

اختيار النطاق

عندما تقوم بتعريف متغير، عليك أن تضع في الحسبان النقاط التالية عند اختيار نطاقه.

الميزات الحسنة للمتغيرات المحلية

المتغيرات المحلية اختيار جيد لأي نوع من العمليات الحسابية المؤقتة للأسباب التالية:

  • تجنّب الاسم المتعارض. أسماء المتغر المحلي ليست عرضة للتعارض. على سبيل المثال، يمكنك إنشاء عدة إجراءات مختلفة التي تحتوي على متغير تسمى intTemp. طالما كل intTemp تم التصريح عنها كمتغير محلي، يتعرف كل إجراء الإصدار الخاص به من intTemp. أي إجراء واحد يمكنها تغيير القيمة المحلي intTemp دون التأثير على intTemp المتغيرات في الإجراءات الأخرى.

  • استهلاك الذاكرة المتغيرات المحلية تستهلك ذاكرة فقط أثناء تشغيل إجراء الخاص بهم. يتم تحرير الذاكرة الخاصة بهم عند إرجاع الإجراء إلى استدعاء التعليمات البرمجية. بواسطة تباين (Visual Basic) المشترك و ثابت (Visual Basic) المتغيرات تستهلك موارد ذاكرة حتى يتوقف التطبيق قيد التشغيل, لذلك استخدمها فقط عند الضرورة. متغيرات المثيل تستهلك ذاكرة بينما يستمر وجود مثيل الخاصة بهم لجعلها أقل فاعلية من المتغيرات المحلية ولكن قد تكون أكثر فاعلية من Shared أو Static المتغيرات.

تقليل نطاق

بشكل عام، عندما التصريح عن أي متغير أو ثابت, من الجيد برمجة التدريب العملي إلى تأكد نطاق كما ضيق ممكن (قطعة نطاق هو narrowest). هذا يساعد في الحفاظ على الذاكرة كما يقلل من فرص تعليمات برمجية الإشارة إلى المتغير غير صحيح. وبنفس الطريقة، يجب أن تقوم بتعريف متغير إلى يكون ثابت (Visual Basic) فقط عندما يكون ضرورياً إلى الاحتفاظ قيمته بين استدعاءات الإجراءات.

راجع أيضًا:

المهام

كيفية القيام بما يلي: نطاق التحكم بالمتغير

المبادئ

الصفات المميزة للعنصر المعلن

العمر في Visual Basic

مستويات الوصول في Visual Basic

تعريف متغير في Visual Basic

موارد أخرى

مراجع لعناصر معرّفه