是否可以在C#中使以下代码有效,而无需更改我的命名空间或类型名称。我想知道这个问题是否有诀窍或关键词?
namespace NS
{
public class Foo { }
}
namespace NS.Foo
{
public class Bar { }
}
我得到的错误是“命名空间'NS'已包含'Foo'的定义。”
答案 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
个。