استخدام مساحات الاسم ( ارشادات البرمجة C# )

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

الوصول إلى مساحات الاسم

تبدأ معظم تطبيقات# بمقطع التوجيهات using. يسرد هذا القسم في مساحات الاسم أن التطبيق سوف يستخدم بشكل متكرر، ويحفظ المبرمج من تحديد اسم مؤهل بالكامل في كل مرة يتم استخدام أسلوب المضمنة.

على سبيل المثال، عن طريق تضمين سطر:

using System;

في بداية البرنامج يمكن للمبرمج استخدام الرمز:

Console.WriteLine("Hello, World!");

بدلاً من:

System.Console.WriteLine("Hello, World!");

الأسماء المستعارة لمساحة الاسم

التوجيه using (مرجع #C) يمكن استخدامخ أيضاً لإنشاء اسم مستعار للحصول مساحة الاسم. على سبيل المثال، إذا كنت تستخدم مساحة مكتوبة سابقا الذي تحتوي مساحات اسم متداخلة، فقد تحتاج إلى تعريف اسم مستعار لتوفير طريقة مختصرة للرجوع إلى أحد على بشكل خاص، كما في المثال التالي:

using Co = Company.Proj.Nested;  // define an alias to represent a namespace

استخدام مساحات الاسم للتحكم بالنطاق

الكلمة الأساسية namespace تستخدم لتعريف النطاق. القدرة على إنشاء نطاقات ضمن المشروع الخاص بك يساعدك على تنظيم التعليمات البرمجية "الرمز" ويسمح لك بإنشاء أنواع فريدة على مستوى العالم. في المثال التالي عنونت الفئة SampleClass وتعرف في مساحتي اسم احداهما متداخلة بالأخرى. . عامل التشغيل (مرجع #C) تستخدم للتمييز بين الأسلوب الذي يحصل على الاستدعاء.

namespace SampleNamespace
{
    class SampleClass
    {
        public void SampleMethod()
        {
            System.Console.WriteLine(
              "SampleMethod inside SampleNamespace");
        }
    }

    // Create a nested namespace, and define another class.
    namespace NestedNamespace
    {
        class SampleClass
        {
            public void SampleMethod()
            {
                System.Console.WriteLine(
                  "SampleMethod inside NestedNamespace");
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Displays "SampleMethod inside SampleNamespace."
            SampleClass outer = new SampleClass();
            outer.SampleMethod();

            // Displays "SampleMethod inside SampleNamespace."
            SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
            outer2.SampleMethod();

            // Displays "SampleMethod inside NestedNamespace."
            NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
            inner.SampleMethod();
        }
    }
}

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

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

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

namespace N1     // N1
{
    class C1      // N1.C1
    {
        class C2   // N1.C1.C2
        {
        }
    }
    namespace N2  // N1.N2
    {
        class C2   // N1.N2.C2
        {
        }
    }
}

في مقطع التعليمات البرمجية السابق:

  • مساحة الاسم N1 يعتبر عضو فيًا في مساحة الاسم العمومي. اسم مؤهل بشكل كاملN1.

  • مساحة الاسم N2 عضو في N1. اسم مؤهل بشكل كاملN1.N2.

  • فئة C1 هي عضو في N1. اسم مؤهل بشكل كاملN1.C1.

  • اسم الفئة C2 يتم استخدام مرتين في هذه التعليمات الرمجية. ومع ذلك، الأسماء المؤهل بالكامل تكون فريدة. أول مثيل من C2 تم تعريفه داخل C1; لذلك، يكون الاسم المؤهل بالكامل له: N1.C1.C2. المثيل الثانيC2 تم تعريفه داخل مساحة الاسم N2; لذلك، يكون الاسم المؤهل بالكامل له هو N1.N2.C2.

باستخدام مقطع التعليمات البرمجية السابقة, يمكنك إضافة عضو فئة جديدة C3، إلى مساحة الاسم N1.N2 كما يلي:

namespace N1.N2
{
    class C3   // N1.N2.C3
    {
    }
}

بشكل عام، استخدم :: للإشارة لمساحة اسم لاسم مستعار أو لمساحة أو global:: للرجوع إلى مساحة الاسم العمومي و . إلتأهيل الأنواع أو الأعضاء.

من الخطأ استخدام :: مع اسم مستعار يشير لنوع بدلاً من مساحة الاسم. فعلى سبيل المثال:

using Alias = System.Console;
class TestClass
{
    static void Main()
    {
        // Error
        //Alias::WriteLine("Hi");

        // OK
        Alias.WriteLine("Hi");
    }
}

تذكر أن الكلمة global غير معرفه مسبقاً كاسم مستعار; لذلك، global.X لا يحتوي على أي معنى خاص. تكتسب معنى خاصا فقط عندما يتم استخدامه مع ::.

ينشأ إنذار المترجم CS0440 إذا قمت بتعريف اسم مستعار يسمى عمومي لأن global:: تشير مساحة الاسم عمومية و ليس لاسم مستعار دوماً. على سبيل المثال، السطر التالي ينشئ التحذير:

using global = System.Collections;   // Warning

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

using Alias = System;
namespace Library
{
    public class C : Alias.Exception { }
}

هذا يعمل, ولكن إذا تمت تسمية نوع Alias وقد عرض في وقت لاحق، Alias. سوف يربط هذا النوع بدلاً من ذلك. باستخدامAlias::Exception يؤكد أن Aliasيعامل كمساحة اسم مستعار وليس مخطئا بالنسبة للنوع.

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

راجع أيضًا:

المرجع

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

الكلمات الأساسية لمساحة الاسم (مرجع C#)

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

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

extern (مرجع #C)

المبادئ

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