مساحات الأسماء في Visual Basic

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

على سبيل المثال، .NET Framework تعرّف الفئة ListBox في مساحة الاسم System.Windows.Forms. يظهر جزء التعليمات البرمجية التالي كيفية تعريف متغير باستخدام الاسم المؤهل بشكل كامل لهذه الفئة:

Dim LBox As System.Windows.Forms.ListBox

تجنب تضاربات الاسم

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

على سبيل المثال، إذا قمت إنشاء فئة جديدة باسم ListBox، يمكنك استخدامها داخل المشروع دون تأهيل. ومع ذلك، إذا أردت استخدام فئة .NET Framework ListBox في نفس المشروع، يجب عليك استخدام مرجع مؤهل بشكل كامل لجعل المرجع فريد. إذا لم يكن المرجع فريد، Visual Basic ينتج خطأ يشير إلى أن الاسم يدعو للالتباس. يوضح مثال التعليمات البرمجية التالي كيفية تعريف هذه الكائنات:

' Define a new object based on your ListBox class.
Dim LBC As New ListBox
' Define a new Windows.Forms ListBox control.
Dim MyLB As New System.Windows.Forms.ListBox

يبين الرسم التوضيحي التالي مساحتي أسماء هرمية، تحتوي كلاً منهما على كائن باسم ListBox.

التسلسل الهيكلي لمساحة الاسم

بشكل افتراضي، كل ملف قابل للتنفيذ تقوم بإنشائه مع Visual Basic يتضمن مساحة اسم بنفس الاسم مثل مشروعك . على سبيل المثال، إذا تم بتعريف كائن ضمن مشروع باسم ListBoxProject، يتضمن الملف التنفيذي ListBoxProject.exe مساحة اسم تسمى ListBoxProject.

يمكن أن تستخدم تجميعات متعددة نفس مساحة الاسم. Visual Basic يتعامل معها على أنها مجموعة واحدة من الأسماء. على سبيل المثال، يمكنك تعريف فئات لمساحة اسم تسمى SomeNameSpace في تجميع باسم Assemb1، وتعريف فئات إضافية لنفس مساحة الاسم من تجميع باسم Assemb2.

الأسماء المؤهلة بشكل كامل

الأسماء المؤهلة بشكل كامل هي عبارة عن مراجع كائن مسبوقة باسم مساحة الاسم التي تم تعريف الكائن بها. يمكنك استخدام كائنات معرفة في مشاريع أخرى إذا قمت بإنشاء مرجع إلى الفئة (عن طريق اختيار إضافة مرجع من قائمة مشروع) ثم استخدم الاسم المؤهل بشكل كامل للكائن في التعليمات البرمجية. يظهر جزء التعليمات البرمجية التالي كيفية استخدام الاسم المؤهل بالكامل لكائن من مساحة اسم مشروع آخر:

Dim LBC As New ListBoxProject.Form1.ListBox

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

Imports LBControl = System.Windows.Forms.ListBox
Imports MyListBox = ListBoxProject.Form1.ListBox
Dim LBC As LBControl
Dim MyLB As MyListBox

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

' This namespace contains a class called Class1.
Imports MyProj1
' This namespace also contains a class called Class1.
Imports MyProj2

في حالة محاولتك لاستخدام Class1 بدون تأهيله بشكل كامل، Visual Basic ينتج خطأ يشير إلى أن الاسم Class1 يدعو للالتباس.

عبارات مستوى مساحات الأسماء

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

كلمة أساسية عمومية

إذا قمت بتعريف تسلسل هرمي متداخل من مساحات الأسماء، قد يتم حظر التعليمات البرمجية داخل ذلك التسلسل الهيكلي من الوصول إلى مساحة الاسم System لـ.NET Framework. . يوضح المثال التالي التسلسل الهرمي الذي تمنع به مساحة الاسم SpecialSpace.System الوصول إلى System.

Namespace SpecialSpace
    Namespace System
        Class abc
            Function getValue() As System.Int32
                Dim n As System.Int32
                Return n
            End Function
        End Class
    End Namespace
End Namespace

نتيجة لذلك، لايمكن لبرنامج التحويل البرمجي Visual Basic حل بنجاح المرجع إلى System.Int32، لأن SpecialSpace.System لا يعرف Int32. يمكنك استخدام الكلمة الأساسية Global لبدء سلسلة تأهيل للمستوى الأبعد لمكتبة فئة .NET Framework . يسمح لك هذا إلى تحديد مساحة الاسم System أو أي مساحة اسم أخرى في مكتبة الفئات. فيما يلي مثال يوضّح ذلك.

Namespace SpecialSpace
    Namespace System
        Class abc
            Function getValue() As Global.System.Int32
                Dim n As Global.System.Int32
                Return n
            End Function
        End Class
    End Namespace
End Namespace

يمكنك استخدام Global للوصول إلى مساحات أسماء المستوى الأول, مثل Microsoft.VisualBasic، و أي مساحة اسم مقترنة مع المشروع الخاص بك.

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء و استخدام التجميعات باستخدام خط الأوامر (C# و Visual Basic)

المرجع

التجميعات ومخزن التجميع العمومي المؤقت (C# و Visual Basic)

استيراد كشف (مساحة الاسم و نوع NET.)

ListBox

System.Windows.Forms

المبادئ

المراجع و كشف عمليات الاستيراد