2010-02-10 12 views
9

Qual è la differenza per i seguenti due modi di definire lo spazio dei nomi?C# namespace questions

namespace A.B.C { 
    public class AA{ 

    } 
} 

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

      } 
     } 
    } 
} 

in qualche dove io possa avere

namespace A{ 
//some classes 
} 

namespace A.B { 
//some classes 
} 

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

Entrambi hanno bisogno di fare lo stesso per utilizzare la classe AA da using A.B.C; Posso usare C.AA a; per specificare la classe AA in C namespace o devo usare il fall namespace convention: A.B.C.AA a; per evitare il conflitto possibile?

risposta

9

Sono uguali. Se si guarda a questo codice in .NET Reflector:

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

} 
} 
} 
} 

si ottiene questo:

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

Entrambi i metodi sono compilate esattamente lo stesso codice di linguaggio intermedio.

+0

E l'altra domanda "Posso usare C.AA a; per specificare la classe AA nello spazio dei nomi C o devo usare la convenzione dello spazio dei nomi di caduta: A.B.C.AA a; per evitare il conflitto possibile?". Per quanto ne so, puoi ottenere ciò solo usando alias (usando C = A.B.C). – Ivan