我有一个无法解决的转型问题:
在ClassA的初始化函数中,我想将'this'作为参数传递,但编译器无法将>转换为, U>>,尽管它们是相同的(其中T:ClassB)。
在ClassA的初始化函数中,我想将'this'作为参数传递,但编译器无法将>转换为, U>>,尽管它们是相同的(其中T:ClassB)。
public class ClassA<T, U> : MonoBehaviour where T : ClassB<U>
{
public void initialize()
{
T item =...
item.Initialize(this); // Cannot implicitly convert from ClassA<T, U> to ClassA<ClassB<U>, U>.
}
}
public class ClassB<T> : MonoBehaviour
{
public virtual void Initialize(ClassA<ClassB<T>, T> mgr, T data)
{
...
}
}
感谢。
ClassA<T, U>
转换为ClassA<ClassB<U>, U>
?泛型类是不变的。例如,你不能将List<string>
强制转换为List<object>
。在这里也是同样的情况。 - SweeperT
,无论它是什么或从ClassB<U>
继承而来,都是被允许的。 - Marc Gravell