是否可以在不更改我的命名空间或类型名称的情况下使以下代码在 C# 中有效。我想知道这个问题是否有技巧或关键字?
namespace NS
{
public class Foo { }
}
namespace NS.Foo
{
public class Bar { }
}
我得到的错误是“命名空间'NS'已经包含'Foo'的定义”。
是否可以在不更改我的命名空间或类型名称的情况下使以下代码在 C# 中有效。我想知道这个问题是否有技巧或关键字?
namespace NS
{
public class Foo { }
}
namespace NS.Foo
{
public class Bar { }
}
我得到的错误是“命名空间'NS'已经包含'Foo'的定义”。
否 - 想象一下在Foo
调用中有一个子类Bar
:
namespace NS
{
public class Foo { public class Bar {} }
}
namespace NS.Foo
{
public class Bar { }
}
如果有人这样做,你怎么能分辨出区别:new NS.Foo.Bar()
?
不——没有办法消除命名空间和类NS.Foo
的歧义。NS.Foo
本质上,没有。即使你能以某种方式解决直接的歧义,这个问题也会一直存在:如果你声明一个Foo
名为 named的属性会发生什么Bar
?
重命名你Foo
的一个。