2010-02-10 79 views
9

sự khác biệt của hai cách sau để xác định không gian tên là gì?Câu hỏi về không gian tên C#

namespace A.B.C { 
    public class AA{ 

    } 
} 

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

      } 
     } 
    } 
} 

ở một số nơi tôi có thể có

namespace A{ 
//some classes 
} 

namespace A.B { 
//some classes 
} 

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

Cả hai cần phải làm như vậy để sử dụng lớp AA bởi using A.B.C; Tôi có thể sử dụng C.AA a; để xác định các lớp AA trong C namespace hay tôi phải sử dụng quy ước không gian tên fall: A.B.C.AA a; để tránh xung đột về tài sản?

Trả lời

9

Chúng giống nhau. Nếu bạn nhìn vào mã này trong .NET Reflector:

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

} 
} 
} 
} 

bạn có được điều này:

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

Cả hai phương pháp được biên soạn chính xác mã ngôn ngữ trung gian tương tự.

+0

Còn câu hỏi khác "Tôi có thể sử dụng C.AA a; để chỉ định lớp AA trong không gian tên C hoặc tôi phải sử dụng quy ước không gian tên fall: A.B.C.AA a; để tránh xung đột về sở hữu?". Theo tôi biết bạn có thể đạt được điều này chỉ bằng cách sử dụng bí danh (sử dụng C = A.B.C). – Ivan