大家帮我看看下面代码,重写的方法怎么声明为virtual,还能被重写。

ndslpsp 2007-11-10 11:01:30
需要using System.Collections;
public class Fibonacci : CollectionBase
{
public Fibonacci()
{
}
public virtual int Add(int value)
{
return base.InnerList.Add(value);
}
public object Peek(int index)
{
return base.List[index];
}
public virtual void ReMove()
{
base.InnerList.RemoveAt((int)base.InnerList.Count - 1);
}

static public Fibonacci sd=new Fibonacci();
public static void Print(Fibonacci list)
{
IEnumerator ienu=sd.GetEnumerator();
int i=0;
while(ienu.MoveNext())
{
Console.Write(ienu.Current+" ");
i=i+1;
if(i%10==0)
Console.WriteLine();
}
}

static void Main(string[] args)
{
sd.Add(1);
sd.Add(1);
for(int i=2;i<20;i++)
{
sd.Add((int)sd.Peek(i-1)+(int)sd.Peek(i-2));
}
Print(sd);
Console.ReadLine();
}
}
这个自定义集合怎么都这么写:public virtual int Add(int value)(声明方法为vitual)来重写Add方法呢?写错了吧。但又能运行出结果呢?菜鸟希望大家帮助,^_^
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sadever 2007-11-11
  • 打赏
  • 举报
回复
写错?难道楼主以为是抽象?虚拟只是为了继承的方便。
wheeler 2007-11-11
  • 打赏
  • 举报
回复
不想被重写应该使用sealed关键词来锁定。virtual关键词是声明当该方法被重写时不是new。
ndslpsp 2007-11-11
  • 打赏
  • 举报
回复
知道了,谢谢楼上的这些朋友。
cww2010 2007-11-11
  • 打赏
  • 举报
回复
public virtual int Add(int value)
用virtual来声明这个方法是可以被字类重写的。
如果没有virtual子类将不能重写这个方法。
没有子类,它也能独立运行的,方法和子类无关的。
yufenfeila 2007-11-11
  • 打赏
  • 举报
回复
去掉这个关键字也不会对本程序产生影响,它主要是为了以后继承这个类而使用的

参考:
http://blog.csdn.net/zhoufoxcn/archive/2007/01/31/1498685.aspx
http://www.cnblogs.com/Bear-Study-Hard/archive/2005/12/22/302420.html

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧