Los espacios de nombres son una forma de agrupar código relacionado y de evitar conflictos de nombres, y están presentes en general en todo código que no sea de lo más trivial.
La sintaxis es la siguiente:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
Los tipos encerrados en espacios de nombres se referencian fuera del ámbito del espacio de nombres anteponiendo al nombre del tipo la sintaxis de punto. Como alternativa, y más habitualmente, puedes colocar una directiva using al inicio del archivo (o dentro de un espacio de nombres), y el tipo se puede usar sin el prefijo. Dentro del mismo espacio de nombres no hace falta calificar los nombres de los 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();
}
}
}
Puedes asignar un alias a un espacio de nombres con la sintaxis using MyAlias = MySpace; y luego usar el alias en cualquier lugar donde podría usarse el espacio de nombres.
La gerencia está empezando a aplicar principios darwinianos al proyecto del auto de control remoto remote-control-competition. Los desarrolladores se han dividido en dos equipos, Red y Blue, y tienen la tarea de mejorar el diseño de forma independiente el uno del otro. No necesitan preocuparse por las decisiones de diseño del otro equipo.
Te han pedido que le eches un vistazo al código y veas cómo combinar mejor los dos esfuerzos con fines de prueba.
Usa namespaces para expresar mejor la intención del código.
Actualmente, tipos importantes como Motor y Telemetry, por no mencionar RemoteControlCar en sí, están anidados dentro de una clase estática contenedora, <Color>RemoteControlCarTeam. El único propósito de la clase contenedora es permitir que tipos con el mismo nombre coexistan en el programa. Eso se expresa mejor usando un namespace. Verás en el siguiente ejercicio que, para estos fines, un namespace tiene ventajas sobre una static class.
Aunque la gerencia insiste en que los equipos se llamen RedRemoteControlCarTeam y BlueRemoteControlCarTeam en las definiciones, los nombres son bastante engorrosos cuando se hace referencia a los equipos. Encuentra la forma de usar los identificadores más cortos Red y Blue al construir los autos.
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.