C# Namespace

namespaceSein Entwurfszweck ist es, eine Möglichkeit zu bieten, eine Gruppe von Namen von anderen Namen zu trennen. Der Name einer Klasse, die in einem Namespace deklariert ist, steht nicht in Konflikt mit dem Namen derselben Klasse, die in einem anderen Namespace deklariert ist.

Nehmen wir ein Beispiel aus einem Computersystem: Ein Ordner (Verzeichnis) kann mehrere Ordner enthalten, und innerhalb jedes Ordners dürfen Dateinamen nicht identisch sein, aber Dateien in verschiedenen Ordnern können denselben Namen haben.

Namespace definieren

Ein Namespace beginnt mit dem Schlüsselwortnamespace, gefolgt vom Namen des Namespace, wie unten gezeigt:

namespace namespace_name
{
   // Code-Deklaration
}

Um eine Funktion oder Variable aufzurufen, die die Namespace-Version unterstützt, wird der Namespace-Name vorangestellt, wie unten gezeigt:

namespace_name.item_name;

Das folgende Programm demonstriert die Verwendung von Namespaces:

Beispiel

using System;
namespace first_space
{
   class namespace_cl
   {
      public void func()
      {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space
{
   class namespace_cl
   {
      public void func()
      {
         Console.WriteLine("Inside second_space");
      }
   }
}  
class TestClass
{
   static void Main(string[] args)
   {
      first_space.namespace_cl fc = new first_space.namespace_cl();
      second_space.namespace_cl sc = new second_space.namespace_cl();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

Inside first_space
Inside second_space

usingSchlüsselwörter

usingDas Schlüsselwort gibt an, dass das Programm Namen aus einem gegebenen Namespace verwendet. Zum Beispiel verwenden wir in unserem Programm den NamespaceSystem, in dem die Klasse Console definiert ist. Wir können einfach schreiben:

Console.WriteLine ("Hello there");

Wir können den vollqualifizierten Namen wie folgt schreiben:

System.Console.WriteLine("Hello there");

Sie können auch dieusing-Namespace-Direktive verwenden, sodass Sie den Namespace-Namen nicht davor angeben müssen, wenn Sie sie verwenden. Diese Direktive teilt dem Compiler mit, dass der folgende Code Namen aus dem angegebenen Namespace verwendet. Der folgende Code veranschaulicht die Anwendung von Namespaces.

Lassen Sie uns das obige Beispiel unter Verwendung der `using`-Direktive neu schreiben:

Beispiel

using System;
using first_space;
using second_space;

namespace first_space
{
   class abc
   {
      public void func()
      {
         Console.WriteLine("Inside first_space");
      }
   }
}
namespace second_space
{
   class efg
   {
      public void func()
      {
         Console.WriteLine("Inside second_space");
      }
   }
}  
class TestClass
{
   static void Main(string[] args)
   {
      abc fc = new abc();
      efg sc = new efg();
      fc.func();
      sc.func();
      Console.ReadKey();
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

Inside first_space
Inside second_space

Verschachtelter Namespace

Namespaces können verschachtelt werden, das heißt, Sie können einen weiteren Namespace innerhalb eines Namespace definieren, wie unten gezeigt:

namespace namespace_name1 
{
   // 代码声明
   namespace namespace_name2 
   {
     // 代码声明
   }
}

Sie können den Punktoperator (.) verwenden, um auf Mitglieder geschachtelter Namespaces zuzugreifen, wie unten gezeigt:

Beispiel

using System;
using SomeNameSpace;
using SomeNameSpace.Nested;

namespace SomeNameSpace
{
    public class MyClass
    {
        static void Main()
        {
            Console.WriteLine("In SomeNameSpace");
            Nested.NestedNameSpaceClass.SayHello();
        }
    }

    // Geschachtelter Namespace
    namespace Nested  
    {
        public class NestedNameSpaceClass
        {
            public static void SayHello()
            {
                Console.WriteLine("In Nested");
            }
        }
    }
}

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

In SomeNameSpace
In Nested
Weitere Erweiterungen