2010-02-10 14 views
9

¿Cuál es la diferencia para las dos formas siguientes de definir el espacio de nombres?C# namespace questions

namespace A.B.C { 
    public class AA{ 

    } 
} 

namespace A { 
    namespace B{ 
     namesapce C{ 
      public class AA{ 

      } 
     } 
    } 
} 

en algunos donde yo pueda tener

namespace A{ 
//some classes 
} 

namespace A.B { 
//some classes 
} 

namespace A { 
namespace B { 
//some classes 
} 
} 

ambos tienen que hacer lo mismo para usar la clase AA por using A.B.C; ¿Puedo utilizar C.AA a; para especificar la clase AA en C espacio de nombres o tengo que utilizar el convención de espacio de nombres de caída: A.B.C.AA a; para evitar posibles conflictos?

Respuesta

9

Son lo mismo. Si nos fijamos en este código en .NET Reflector:

namespace A { 
namespace B{ 
namespace C{ 
public class AA{ 

} 
} 
} 
} 

se obtiene lo siguiente:

namespace A.B.C 
{ 
    public class AA 
    { 
     // Methods 
     public AA(); 
    } 
} 

Ambos métodos son compilados a exactamente el mismo código de lenguaje intermedio.

+0

¿Qué pasa con la otra pregunta "¿Puedo usar C.AA para especificar la clase AA en el espacio de nombres C o tengo que usar la convención de espacios de nombres fallidos: A.B.C.AA a para evitar posibles conflictos?". Por lo que yo sé, puedes lograr esto solo usando alias (usando C = A.B.C). – Ivan