我有一个无法解决的选角问题:
在 ClassA 初始化函数中,我想传递 'this' 作为参数,但编译器无法从 ClassA<T, U>
进行强制转换至ClassA<ClassB<U>, U>
知道它们是相同的 ( where T : ClassB<U>
)。
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)
{
...
}
}
谢谢。
最佳答案
考虑:Elephant : Animal
;这并不意味着List<Elephant> : List<Animal>
,并且您不能转换 List<Elephant>
到 List<Animal>
出于多种原因(包括:在转换为 Add(monkey)
后,这会让您 List<Elephant>
到 List<Animal>
,因为 Monkey : Animal
)。从概念上讲,这里是完全相同的。
关于C# 泛型强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59715613/