测试帖:C#中的New和Override用法测试!

Julyseven 2008-10-17 06:52:21
今天在看C#中New和Override用法时的例子,请大家回复时直接写上你认为的测试结果,不准作弊哈!
可以参考MSDN:“override(C# 参考)”下的“了解何时使用 Override 和 New 关键字”,代码如下:

namespace ConsoleApp
{
public class Animal
{
public virtual void Show()
{
Console.WriteLine("animal!");
}
}

public class Cat : Animal
{
public new virtual void Show()
{
base.Show();
Console.WriteLine("cat!");
}
}

public class WhiteCat : Cat
{
public override void Show()
{
base.Show();
Console.WriteLine("white cat!");
}
}
}
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Animal[] animals = new Animal[3];
animals[0] = new Animal();
animals[1] = new Cat();
animals[2] = new WhiteCat();

for (int i = 0; i < animals.Length; i++)
{
Console.WriteLine("type:{0}", animals[i].GetType());
animals[i].Show();
}

Console.ReadLine();
}
}
}
...全文
149 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yayaqi1860 2009-03-30
  • 打赏
  • 举报
回复
测试结果:

ConsoleApp.animal
animal!
ConsoleApp.cat
animal!
ConsoleApp.whitecat
animal!
如果要得到:

ConsoleApp.animal
animal
ConsoleApp.cat
animal cat
ConsoleApp.whitecat
animal white cat

将CAT类的new virtual 关键字改为override 并将 cat 和 whitecat中的base show()去掉即可
yayaqi1860 2009-03-30
  • 打赏
  • 举报
回复
ConsoleApp.animal
animal!
ConsoleApp.cat
animal!
ConsoleApp.whitecat
animal!
Atai-Lu 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yagebu1983 的回复:]
接分!!
[/Quote]
正事
xyhuan 2008-10-18
  • 打赏
  • 举报
回复
这不是猫和老鼠那个经典的笔试题么?以前自己也写过,明天再给答案吧。
mengxj85 2008-10-18
  • 打赏
  • 举报
回复
有些困了,先JF,如果明早起来还能找到,再看看了
cjjsun 2008-10-18
  • 打赏
  • 举报
回复
学习!
tian_fang 2008-10-18
  • 打赏
  • 举报
回复
学习
superliu1122 2008-10-18
  • 打赏
  • 举报
回复
恐怕大部分错的是因为没仔细看代码
greatverve 2008-10-18
  • 打赏
  • 举报
回复
bhtfg538 2008-10-18
  • 打赏
  • 举报
回复
Up 一个,很久没上csdn了
lovehongyun 2008-10-18
  • 打赏
  • 举报
回复
晕。。没环境,没测。不过应该对:)

Type:ConsoleApp.animal
animal!

Type:ConsoleApp.Cat
animal!

Type:ConsoleApp.WhiteCat
animal!
wuyi8808 2008-10-18
  • 打赏
  • 举报
回复
路过一下。
much0726 2008-10-18
  • 打赏
  • 举报
回复
感觉是:
ConsoleApp.animal
animal
ConsoleApp.cat
animal cat
ConsoleApp.whitecat
animal white cat
没想到结果是:
ConsoleApp.animal
animal!
ConsoleApp.cat
animal!
ConsoleApp.whitecat
animal!
编程有钱人了 2008-10-18
  • 打赏
  • 举报
回复
jf
丛晓男 2008-10-18
  • 打赏
  • 举报
回复
animal!
animal!
white cat!

不知道对不
Julyseven 2008-10-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lovehongyun 的回复:]
晕。。没环境,没测。不过应该对:)


C# codeType:ConsoleApp.animal
animal!

Type:ConsoleApp.Cat
animal!

Type:ConsoleApp.WhiteCat
animal!
[/Quote]
11楼的大哥是标准答案哈!如果大家感兴趣可以试试将CAT类的new virtual 关键字改为override看又是什么效果。
其实就是两句话,如果是用的New,则调用到基类方法,如果是override,则会调用它实质类的方法。
yagebu1983 2008-10-17
  • 打赏
  • 举报
回复
接分!!
amandag 2008-10-17
  • 打赏
  • 举报
回复
无环境
winner2050 2008-10-17
  • 打赏
  • 举报
回复
Override 快
IMAGSE 2008-10-17
  • 打赏
  • 举报
回复
重写啊,哈哈,感觉web服务器控件用着不爽时候经常这么敢,不过还真没测试过!

友情帮顶!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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