0
我有泛型类,应该是一棵树,我想继承类是这样的:C#类仿制药继承,方法的返回类型
public class Tree<T> {
private HashSet<Tree<T>> leaves;
private T data;
public Tree() {
leaves = new HashSet<Tree<T>>();
}
public Tree(T data) : this() {
this.data = data;
}
public T Data {
get {
return this.data;
}
set {
data = value;
}
}
public virtual Tree<T> findInLeaves(T data) {
foreach(Tree<T> leaf in leaves) {
if(leaf.Data.Equals(data)) {
return leaf;
}
}
return null;
}
}
public class ComboTree : Tree<IComboAction> {
private ComboMovement movement;
public ComboTree() : base() {
Movement = null;
}
public ComboTree(IComboAction action) : base(action) {
Movement = null;
}
public ComboMovement Movement {
get {
return this.movement;
}
set {
movement = value;
}
}
}
把数据的效果很好,但是当我尝试使用方法findInLeaves我总是得到null。我知道类型转换有问题,但为什么如果ComboTree继承树?
void readMove(IComboAction action) {
ComboTree leaf = (ComboTree)currentLeaf.findInLeaves(action);
}
的问题是为什么,以及如何解决它?
编辑:我创建控制台程序,运行它,它的工作原理。所以这一定是我的引擎问题!
返回的对象与传递给父泛型类的构造函数的对象相同。告诉我们如何初始化'root'。 – SimpleVar
不,你不要有一个简单的泛型类“这样的”,因为“这”不会编译。你有一个真实的例子吗?对不起,但细节很重要。特别是,“‘GenericTree’不包含一个构造函数参数0” - 我们真的** **需要看到构造函数的使用评论 –
显示创建根和调用test – Tarik