0

是否可以在不更改我的命名空间或类型名称的情况下使以下代码在 C# 中有效。我想知道这个问题是否有技巧或关键字?

namespace NS
{
    public class Foo { }
}

namespace NS.Foo
{
    public class Bar { }
}

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

4

3 回答 3

4

否 - 想象一下在Foo调用中有一个子类Bar

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

namespace NS.Foo
{
    public class Bar { }
}

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

于 2013-08-12T14:51:36.697 回答
0

不——没有办法消除命名空间和类NS.Foo歧义NS.Foo

于 2013-08-12T14:51:35.260 回答
0

本质上,没有。即使你能以某种方式解决直接的歧义,这个问题也会一直存在:如果你声明一个Foo名为 named的属性会发生什么Bar

重命名你Foo的一个。

于 2013-08-12T14:51:59.090 回答