我认为以下操作是有意义的,但这是不可能的,并且会引发错误:The namespace 'foo' already contains a definition for 'bar'
.
namespace foo
{
public class bar { ... }
}
namespace foo.bar
{
public class baz : EventArgs { ... }
}
对于这样的情况,命名空间命名的适当方式是什么?
您必须了解,在 CLR 上下文中,不存在命名空间这样的东西。
命名空间纯粹是一种语言功能,其存在只是为了简化代码,这样我们就不必总是读取完全限定的类名。
在你的例子中,
namespace foo
{
public class bar { ... }
}
namespace foo.bar
{
public class baz : EventArgs { ... }
}
当编译此源代码时,IL 甚至不知道有两个命名空间 - foo 和 foo.bar。相反,它只知道类定义。在这种情况下,当它遇到类 bar 时,它知道您有一个名为 foo.bar 的类
当它遇到类baz时,它resolves类的全名是 foo.bar.baz
但如果是这种情况, baz 应该在 bar 的类定义中正确声明,而不是像您在这里所做的那样在单独的命名空间中声明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)