C#命名空间问题

5Yr*_*DBA 9 c#

以下两种定义命名空间的方法有什么区别?

namespace A.B.C {
     public class AA{

    }
}

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

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在某些我可能拥有的地方

namespace A{
//some classes 
}

namespace A.B {
//some classes
}

namespace A {
namespace B {
 //some classes
}
}
Run Code Online (Sandbox Code Playgroud)

两者都需要做同样的事情来使用AA类using A.B.C;我可以使用它C.AA a;来指定C命名空间中的AA类,或者我必须使用fall命名空间约定:A.B.C.AA a;避免可能的冲突?

Mar*_*ers 9

他们是一样的.如果你在.NET Reflector中查看这段代码:

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

}
}
}
}
Run Code Online (Sandbox Code Playgroud)

你得到这个:

namespace A.B.C
{
    public class AA
    {
        // Methods
        public AA();
    }
}
Run Code Online (Sandbox Code Playgroud)

两种方法都编译为完全相同的中间语言代码.