【发布时间】:2011-10-20 17:52:55
【问题描述】:
我自己的通用链表实现有问题。我正在处理的分配说两个子类 NodeElementLong 和 NodeElementString 必须从基类 NodeElement 继承。在 NodeElement 中应该有一个虚拟方法 Print 它 后代类以自己的方式覆盖和实现。例如,当我对 long 类型的元素调用 Print 方法时,必须调用 NodeElementLong 子类中的 Print 方法。
代码如下:
class LinearCollection<T>
{
NodeElement<T> head = null;
public bool Add(T element)
{
if (head == null)
{
head = new NodeElement<T>(element);
}
else
{
NodeElement<T> current = head;
while (current.nextNode != null)
{
current = current.nextNode;
}
current.nextNode = new NodeElement<T>(element);
}
return true;
}
public NodeElement<T> Get()
{
NodeElement<T> head1 = head;
head = head.nextNode;
return head1;
}
public void Print()
{
for (NodeElement<T> element = head; element != null; element = element.nextNode)
{
element.Print();
}
}
}
class NodeElement<T>
{
public T element;
public NodeElement<T> nextNode = null;
public NodeElement() { }
public NodeElement(T element)
{
this.element = element;
}
public virtual void Print()
{
Console.WriteLine(element);
}
}
class NodeElementLong : NodeElement<long>
{
public override void Print()
{
Console.WriteLine("This is print long: " + element);
}
}
class NodeElementString : NodeElement<string>
{
public override void Print()
{
Console.WriteLine("This is print string: " + element);
}
}
我刚开始使用 C# 编程,我对泛型不是很熟悉,但我的任务坚持使用它们。当我调用 Print 方法时,会调用虚拟方法,但我希望调用子类中适当的重写 Print 方法。什么是我看不到的问题?
谢谢你们的帮助,伙计们!
干杯!
【问题讨论】:
-
你的作业是要求一个通用类还是你的想法?
-
您为什么认为有问题?如果您能告诉我们一些正在发生的事情以及您预期会发生的事情,这将有助于我们为您提供帮助。
-
它做错了什么?
-
您的问题没有显示任何子类...
-
是的。滚动不足(或滚动太多...)的情况
标签: c# generics overriding