Namespaces são uma forma de agrupar código relacionado e evitar conflitos de nomes, e costumam estar presentes em todas as bases de código, exceto nas mais triviais.
A sintaxe é a seguinte:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
Tipos declarados dentro de namespaces são referenciados fora do escopo do namespace prefixando o nome do tipo com a sintaxe de ponto. Como alternativa, e mais comumente, você pode colocar uma diretiva using no topo do arquivo (ou dentro de um namespace) e o tipo pode ser usado sem o prefixo. Dentro do mesmo namespace, não é preciso qualificar os nomes dos tipos.
namespace MySpace
{
public class MyClass {}
public class Foo
{
public void Bar()
{
var baz = new MyClass();
}
}
}
public class Qux
{
public void Box()
{
var nux = new MySpace.MyClass();
}
}
namespace OtherSpace
{
using MySpace;
public class Tix
{
public void Jeg()
{
var lor = new MyClass();
}
}
}
Você pode criar um alias para um namespace com a sintaxe using MyAlias = MySpace; e depois usar o alias em qualquer lugar onde o namespace poderia ser usado.
A gerência está começando a aplicar princípios darwinianos ao projeto Remote Control Car remote-control-competition. As pessoas desenvolvedoras foram divididas em duas equipes, Red e Blue, e cada uma tem a tarefa de melhorar o design de forma independente da outra. Elas não precisam se preocupar com as decisões de design da outra equipe.
Você recebeu a tarefa de dar uma olhada no código e ver qual é a melhor forma de combinar os dois esforços para fins de teste.
Use namespaces para expressar melhor a intenção do código.
No momento, tipos importantes como Motor e Telemetry, sem falar do próprio RemoteControlCar, estão aninhados dentro de uma classe estática externa, <Color>RemoteControlCarTeam. O único propósito da classe externa é permitir que tipos com o mesmo nome coexistam no programa. Isso é melhor expresso com o uso de um namespace. Você vai ver no próximo exercício que, para esses fins, um namespace tem vantagens sobre uma static class.
Embora a gerência insista que as equipes se chamem RedRemoteControlCarTeam e BlueRemoteControlCarTeam nas definições, esses nomes são bem complicados na hora de referenciar as equipes. Encontre uma forma de usar os identificadores mais curtos Red e Blue ao construir os carros.
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.