C# 当两个引用的程序集都定义类型A.A1时出现问题
如果两个程序集都定义了包含C# 当两个引用的程序集都定义类型A.A1时出现问题,c#,assemblies,namespaces,C#,Assemblies,Namespaces,如果两个程序集都定义了包含类A1的命名空间A,则这两个类被视为唯一类型 a) 这两个名称空间是否也被认为是唯一的 b) 如果program p引用了这两个程序集,我们如何创建这两种类型的实例?也就是说,当我试图创建A.A1 using A; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { A1 a = new
类A1
的命名空间A
,则这两个类被视为唯一类型
a) 这两个名称空间是否也被认为是唯一的
b) 如果program p
引用了这两个程序集,我们如何创建这两种类型的实例?也就是说,当我试图创建A.A1
using A;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
A1 a = new A1(); // error
}
}
}
c) 但如果程序p
也定义了类型B.A1
,那么当我声明A1
的实例时,编译器不会抱怨:
using A;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
A1 a = new A1(); // ok
}
}
class A1 { }
}
编译器不应该抱怨,因为它不知道使用哪个版本的A1
(A.A1
来自引用的程序集或B.A1
)
thanx引用两个具有相同名称空间且在这些名称空间中具有相同成员的程序集是完全不允许的(即不要这样做!)。如果您可以控制一个或另一个程序集,请确保两个程序集的根命名空间不同,然后您可以消除对程序集/命名空间层次结构中成员的引用的歧义。您可以使用指令解决此问题 这是一个例子