namespace A
{
class B
{
}
class A
{
public void f()
{
A.B var = new A.B();
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用 msvc 2019 和 .net core 3.1 编译,此代码示例给出以下错误:
Error CS0426 The type name 'B' does not exist in the type 'A'
Run Code Online (Sandbox Code Playgroud)
我知道最好不要为类和命名空间提供相同的名称。但是有没有办法解决这种碰撞?
不需要声明命名空间,因为 classB已经用与 class 相同的命名空间声明了A。因此,只需删除A,Visual Studio 就会弄清楚它是可取的:
namespace A
{
class B
{
}
class A
{
public void f()
{
B var = new B();
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
另一种解决方案是:
using _a = A;
namespace A
{
class B
{
}
class A
{
public void f()
{
_a.B var = new _a.B();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您应该避免将类和命名空间命名为相同的情况。如果您不能或使用第三方代码,您始终可以使用global::关键字来引用命名空间:
namespace A
{
class B
{
}
class A
{
public void f()
{
global::A.B var = new global::A.B();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |