2010-02-10 121 views
9

以下兩種定義命名空間的方式有什麼區別?C#命名空間問題

namespace A.B.C { 
    public class AA{ 

    } 
} 

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

      } 
     } 
    } 
} 
在一些

,我可能有

namespace A{ 
//some classes 
} 

namespace A.B { 
//some classes 
} 

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

雙方都需要做同樣的using A.B.C;我可以使用C.AA a;指定用C命名空間中的AA級使用的AA級或者我必須使用fall命名空間約定:A.B.C.AA a;以避免possbile衝突?

回答

9

它們是一樣的。如果您在.NET Reflector看看這段代碼:

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

} 
} 
} 
} 

你得到這樣的:

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

這兩種方法都被編譯成一模一樣的中間語言代碼。

+0

另一個問題「我可以使用C.AA a;在C命名空間中指定AA類還是我必須使用fall命名空間約定:A.B.C.AA a;以避免possbile衝突?」。據我所知,只有使用別名才能實現這一點(使用C = A.B.C)。 – Ivan 2011-03-16 14:18:15