2010-02-10 119 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