我有一个 C# 程序和以下(我想是新手)问题:
namespace ObjectReference
{
public class A<TypeC>
{
public B b;
public void MethodA()
{
b = new B(this);
}
}
}
在同一项目的不同文件中:
namespace ObjectReference
{
public class B
{
public A<TypeC> a;
public B(A<TypeC> myObjA)
{
a = myObjA;
}
}
}
在定义类 A 的文件中,我在“b = new B(this);
”行收到此错误:"Argument 1: cannot convert from 'ObjectReference.A<TypeC>' to 'ObjectReference.A<ObjectReference.TypeC>'"
.
我已经尝试了一切,我无法解决这个问题,我不明白它为什么会出现,所有类都在同一个命名空间 ObjectReference(即类 A、B 和 TypeC)中定义。就像在 A 类中一样,它认为类的类型是 ObjectReference.A<TypeC>
,而在 B 类中,它认为类型是 ObjectReference.A<ObjectReference.TypeC>
.
请指教。
谢谢
最佳答案
你写的是这样的:
public class A<T>
{
public B b;
public void MethodA()
{
b = new B(this);
}
}
public class B
{
public A<TypeC> a;
public B(A<TypeC> myObjA)
{
a = myObjA;
}
}
请注意,我将 A 类写为 A<T>
而不是 A<TypeC>
.即使您输入了有效的类型名称,它也是合法的 C# 泛型类型,因此在类 A 的定义中 TypeC
与类不同 TypeC
.因此,您会收到错误消息。
要完成这项工作,您需要执行以下操作:
public class A<T>
{
public B<T> b;
public void MethodA()
{
b = new B<T>(this);
}
}
public class B<T>
{
public A<T> a;
public B(A<T> myObjA)
{
a = myObjA;
}
}
然后你可以这样调用代码:
var a = new A<TypeC>();
a.MethodA();
希望对您有所帮助。
关于c# - 使用泛型类 C# 键入奇怪的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819562/