C# 解决相同名称空间中定义的冲突
我在两个不同的名称空间中定义了两个相同的命名类,我希望在我的c#文件中包含这两个名称空间作为using语句,如下所示:C# 解决相同名称空间中定义的冲突,c#,C#,我在两个不同的名称空间中定义了两个相同的命名类,我希望在我的c#文件中包含这两个名称空间作为using语句,如下所示: using A.B; using C.B; if(check) { // Use A.B ones class foo } else { // Use C.B ones class foo } 假设A.B和C.B都有类foo的定义,其中一个将基于如下检查使用: using A.B; using C.B; if(check) { // Use A.B on
using A.B;
using C.B;
if(check)
{
// Use A.B ones class foo
}
else
{
// Use C.B ones class foo
}
假设A.B
和C.B
都有类foo
的定义,其中一个将基于如下检查使用:
using A.B;
using C.B;
if(check)
{
// Use A.B ones class foo
}
else
{
// Use C.B ones class foo
}
最好的方法是什么
另外,我无法更改类的名称。您可以将完全限定的类名与命名空间一起使用
if(检查)
{
var foo=新的A.B.foo();
}
其他的
{
var foo=新的C.B.foo();
}
可以选择为命名空间或类型创建别名。这称为:
或使用完全限定的类名:
if (check)
{
A.B.Foo foo = new A.B.Foo(); // Use A.B ones class foo
}
else
{
C.B.Foo foo = new C.B.Foo(); // Use C.B ones class foo
}
假设在名称空间中有一个类Foo
namespace NameSpaceA
{
class Foo
{
public string Sample { get; set; }
}
}
在命名空间B中也有Foo类
namespace NameSpaceA
{
class Foo
{
public string Sample { get; set; }
}
}
现在您可以像这样在main方法中使用这个类
using AFoo = NameSpaceA.Foo;
using BFoo = NameSpaceB.Foo;
if(check)
{
AFoo afo = new AFoo();
}
else
{
BFoo bFoo = new BFoo();
}
这叫做别名
你也可以用这种方式。它被称为完全限定名
如果这对您有帮助,请选择此作为正确答案。这将有助于社区。您可以将完整的限定类名与命名空间一起使用,例如
var foo=new A.B.foo()代码>或更好:重命名其中一个类以避免将来混淆。@Jabberwocky OP提到我不能更改类的名称。@sporty_1993是否回答了您的问题,您需要更多详细信息或信息?