كيفية القيام بما يلي: استخدام مؤهل الاسم المستعار لمساحة الاسم (دليل البرمجة لـ #C)

القدرة على الوصول إلى عضو في مساحة الاسم العام مفيد عندما يكون العضو مخفي بواسطة وحدة أخرى بنفس الاسم.

على سبيل المثال، في التعليمات البرمجية التالية, يتم تحليل Console إلى TestApp.Console بدلاً من نوع Console في مساحة الاسم System.

using System;
class TestApp
{
    // Define a new class called 'System' to cause problems.
    public class System { }

    // Define a constant called 'Console' to cause more problems.
    const int Console = 7;
    const int number = 66;

    static void Main()
    {
        // Error � Accesses TestApp.Console
        //Console.WriteLine(number);
    }
}

لا يزال استخدام System.Console ينتج خطأً لأن مساحة الاسم System مخفية بواسطة فئة TestApp.System:

// Error � Accesses TestApp.System
System.Console.WriteLine(number);

ومع ذلك، يمكنك حل هذا الخطأ باستخدام global::System.Console، بهذه الطريقة:

// OK
global::System.Console.WriteLine(number);

عندما يكون المعرف الأيسر هو global يبدأ البحث عن المعرّف الأيمن في مساحة الاسم العام. على سبيل المثال، يُرجع التصريح التالي TestApp كعضواً في المساحة العامة.

class TestClass : global::TestApp

من الواضح أن إنشاء مساحة اسم خاصة بك باسم System غير مستحسن، ومن المُؤكّد أنك لن تواجه أية تعليمات برمجية يحدث فيها ذلك. ومع ذلك، في المشاريع الكبيرة يُحتمل حدوث تكرار لاسم المساحة في نموذج واحد أو آخر. في هذه الحالات، مؤهل مساحة الاسم العام يُعتبر ضماناً لك لتحديد مساحة الاسم الجذرية.

مثال

في هذا المثال، تم استخدام مساحة الاسم System لتضمين الفئة TestClass ولذلك يجب استخدام global::System.Console للرجوع للفئة System.Console التي تم إخفاؤها بواسطة مساحة الاسم System. أيضاً، تم استخدام الاسم المستعار colAlias للإشارة إلى مساحة الاسم System.Collections؛ وبالتالي تم إنشاء المثيل System.Collections.Hashtable باستخدام هذا الاسم المستعار بدلاً من مساحة الاسم.

using colAlias = System.Collections;
namespace System
{
    class TestClass
    {
        static void Main()
        {
            // Searching the alias:
            colAlias::Hashtable test = new colAlias::Hashtable();

            // Add items to the table.
            test.Add("A", "1");
            test.Add("B", "2");
            test.Add("C", "3");

            foreach (string name in test.Keys)
            {
                // Seaching the gloabal namespace:
                global::System.Console.WriteLine(name + " " + test[name]);
            }
        }
    }
}
A 1 B 2 C 3 

راجع أيضًا:

المرجع

مساحات الاسم (دليل البرمجة لـ #C)

. عامل التشغيل (مرجع #C)

:: عامل التشغيل (مرجع #C)

extern (مرجع #C)

المبادئ

دليل البرمجة لـ #C