命名空间名称和类型名称冲突

时间:2013-08-12 14:49:07

标签: c#

是否可以在C#中使以下代码有效,而无需更改我的命名空间或类型名称。我想知道这个问题是否有诀窍或关键词?

namespace NS
{
    public class Foo { }
}

namespace NS.Foo
{
    public class Bar { }
}

我得到的错误是“命名空间'NS'已包含'Foo'的定义。”

3 个答案:

答案 0 :(得分:4)

不 - 想象一下Foo中有一个名为Bar的子类:

namespace NS
{
    public class Foo { public class Bar {} }
}

namespace NS.Foo
{
    public class Bar { }
}

如果有人这样做,你怎么能分辨出来:new NS.Foo.Bar()

答案 1 :(得分:0)

不 - 没有办法消除NS.Foo 名称空间NS.Foo 的歧义。

答案 2 :(得分:0)

基本上,没有。即使你能以某种方式解决眼前的歧义,这个问题也会一直存在:如果你声明一个名为Foo的{​​{1}}属性会怎样?

重命名您的Bar个。