Os namespaces, em C#, tendem a ser utilizados para organizar suas classes e projetos dentro de uma mesma solução.
Somente para ilustrar ao leitor, a maioria dos aplicativo do C#, começam com uma seção de using
.
Esta seção lista todos os namespaces que o aplicativo usará com frequência, evitando que o programador repita o nome a cada vez que o método contido for utilizado.
Podemos observar melhor com o exemplo abaixo:
using System; //Neste caso fazemos uma referência ao namespace System.
public class Program
{
private int somador(int a, int b)
{
return a+b;
}
public void Main()
{
Console.WriteLine(somador(10,20));
System.Console.WriteLine(somador(10,20)); //Também é possível executar o código acima, desta forma, fazendo com que não seja necessário adicionar a diretiva using System
}
}
No exemplo acima, não criamos nenhum namespace, porém, é possível fazer isso da seguinte forma:
namespace nome_do_namespace {
// código
}
Ou seja, é possível encapsular toda a parte de soma em um namespace único e utilizar em outro código de maneira mais organizada. Como podemos observar abaixo:
using System;
using Calculadora;
namespace Calculadora
{
public class FuncoesBasicas
{
public static int Somador(int a, int b)
{
return a+b;
}
}
}
public class Program
{
public void Main()
{
Console.WriteLine(FuncoesBasicas.Somador(10,20));
}
}
é importante ressaltar também que a criação de namespaces, não se limitam a um só por código ou projeto. Também é possível criar namespaces aninhados
, onde, neste caso, teremos que acessar o namespace utilizando ponto(.)
.
Observe o exemplo abaixo:
using System;
using Projeto.Calculadora; //Acessa o namespace Calculadora que se encontra dentro do projeto.
using Projeto.DiasDaSemana; //Acessa o namespace DiasDaSemana que se encontra dentro do projeto.
namespace Projeto
{
//Namespace dentro do namespace Projeto.
namespace Calculadora
{
public class FuncoesBasicas
{
public static int Somador(int a, int b)
{
return a+b;
}
}
}
//Namespace dentro do namespace Projeto.
namespace DiasDaSemana
{
public enum Dias {
Dom,
Seg,
Ter,
Qua,
Qui,
Sex,
Sab
};
}
}
public class Program
{
public void Main()
{
Console.WriteLine(FuncoesBasicas.Somador(10,20));
Console.WriteLine(Dias.Sab);
}
}
A partir da versão 10 da linguagem C#, é possível também realizar a declaração de namespaces com escopo de arquivo. Ou seja,
podemos utilizar dentro de um arquivo .cs a declaração using dispensando a utilização das chaves { }
para a delimitação do escopo do
namespace. Desta forma, estamos indicando que todas as declarações logo abaixo da definição do namespace, pertencem a este namespace:
namespace Projeto;
public void Main()
{
Console.WriteLine("Hello World!");
}
Essa nova sintaxe economiza espaço horizontal e vertical para as declarações de namespaces e torna o arquivo de código mais legível.