Los espacios de nombres son una forma de agrupar código relacionado y evitar conflictos de nombres, y por lo general están presentes en todas las bases de código salvo las más triviales.
La sintaxis es la siguiente:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
Se hace referencia a los tipos incluidos en espacios de nombres, fuera del ámbito del espacio de nombres, anteponiendo la sintaxis de punto al nombre del tipo. Como alternativa, y más habitualmente, puedes colocar una directiva using al principio 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 es necesario calificar los nombres de tipo.
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 crear un alias de un espacio de nombres con la sintaxis using MyAlias = MySpace; y luego usar el alias en cualquier lugar donde se pudiera usar el espacio de nombres.
La dirección está empezando a aplicar principios darwinianos al proyecto Remote Control Car 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 entre sí. No necesitan preocuparse por las decisiones de diseño del otro equipo.
Se te ha pedido que eches un vistazo al código y veas cuál es la mejor forma de combinar los esfuerzos de los dos equipos con fines de prueba.
Por favor, usa namespaces para expresar mejor la intención del código.
Actualmente, tipos importantes como Motor y Telemetry, por no hablar del propio RemoteControlCar, 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 dirección insiste en que los equipos deben llamarse RedRemoteControlCarTeam y BlueRemoteControlCarTeam en las definiciones, los nombres resultan bastante engorrosos a la hora de referirse a los equipos. Encuentra la forma de usar los identificadores más cortos Red y Blue al construir los coches.
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.