C# 命名空间问题

9
以下两种方式定义命名空间有什么区别?
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
}
}

如果想要使用class AA,需要通过using A.B.C;导入。我可以在C namespace中使用C.AA a;来指定AA class吗?还是必须使用完整的命名空间A.B.C.AA a;以避免可能的冲突?

1个回答

9

它们是相同的。如果您在.NET Reflector中查看此代码:

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

}
}
}
}

你得到了这个:

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

这两种方法都编译成完全相同的中间语言代码。


那么另一个问题“我可以使用C.AA a;来在C命名空间中指定AA类,还是必须使用全命名空间约定:A.B.C.AA a;来避免可能的冲突?”。据我所知,您只能通过使用别名(using C = A.B.C)来实现这一点。 - Ivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接