Gli spazi dei nomi sono un modo per raggruppare codice correlato ed evitare conflitti di nomi, e in genere sono presenti in tutte le basi di codice tranne le più banali.
La sintassi è la seguente:
namespace MyNameSpace
{
public class MyClass {}
public class OtherClass {}
}
I tipi racchiusi negli spazi dei nomi sono indicati all'esterno dello scope dello spazio dei nomi prefissando il nome del tipo con la sintassi del punto. In alternativa, e più comunemente, puoi inserire una direttiva using all'inizio del file (o all'interno di uno spazio dei nomi) e il tipo può essere usato senza il prefisso. All'interno dello stesso spazio dei nomi non è necessario qualificare i nomi dei tipi.
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();
}
}
}
Puoi assegnare un alias a uno spazio dei nomi con la sintassi using MyAlias = MySpace; e poi usare l'alias ovunque si possa usare lo spazio dei nomi.
La dirigenza ha iniziato ad applicare i principi darwiniani al progetto Remote Control Car remote-control-competition. Gli sviluppatori sono stati divisi in due team, Red e Blue, e hanno il compito di migliorare il design in modo indipendente l'uno dall'altro. Non devono preoccuparsi delle decisioni di design dell'altro team.
Ti è stato chiesto di dare un'occhiata al codice e di capire come combinare al meglio i due lavori per poterli testare.
Usa i namespaces per esprimere meglio l'intenzione del codice.
Attualmente, tipi importanti come Motor e Telemetry, per non parlare di RemoteControlCar stesso, sono annidati all'interno di una classe statica che li racchiude, <Color>RemoteControlCarTeam. L'unico scopo della classe che li racchiude è permettere a tipi con lo stesso nome di coesistere nel programma. Lo si esprime meglio usando un namespace. Nell'esercizio successivo vedrai che, per questi scopi, un namespace ha dei vantaggi rispetto a una static class.
Anche se la dirigenza insiste sul fatto che nelle definizioni i team debbano chiamarsi RedRemoteControlCarTeam e BlueRemoteControlCarTeam, questi nomi sono piuttosto scomodi quando si fa riferimento ai team. Trova un modo per usare gli identificatori più brevi Red e Blue quando costruisci le auto.
Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.