C # - Namespaces

UMA namespacefoi projetado para fornecer uma maneira de manter um conjunto de nomes separado de outro. Os nomes de classe declarados em um namespace não entram em conflito com os mesmos nomes de classe declarados em outro.

Definindo um Namespace

Uma definição de namespace começa com a palavra-chave namespace seguido pelo nome do namespace da seguinte forma -

namespace namespace_name {
   // code declarations
}

Para chamar a versão habilitada para namespace de qualquer função ou variável, acrescente o nome do namespace da seguinte maneira -

namespace_name.item_name;

O programa a seguir demonstra o uso de namespaces -

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();
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Inside first_space
Inside second_space

O uso de palavras-chave

o usingA palavra-chave afirma que o programa está usando os nomes no namespace fornecido. Por exemplo, estamos usando oSystemnamespace em nossos programas. A classe Console é definida lá. Nós apenas escrevemos -

Console.WriteLine ("Hello there");

Poderíamos ter escrito o nome totalmente qualificado como -

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

Você também pode evitar prefixar namespaces com o usingdiretiva de namespace. Esta diretiva informa ao compilador que o código subsequente está fazendo uso de nomes no namespace especificado. O namespace é, portanto, implícito para o seguinte código -

Vamos reescrever nosso exemplo anterior, usando a diretiva -

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();
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Inside first_space
Inside second_space

Namespaces aninhados

Você pode definir um namespace dentro de outro namespace da seguinte maneira -

namespace namespace_name1 {
   
   // code declarations
   namespace namespace_name2 {
      // code declarations
   }
}

Você pode acessar membros do namespace aninhado usando o operador ponto (.) Da seguinte maneira -

using System;
using first_space;
using first_space.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();
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Inside first_space
Inside second_space