【发布时间】:2013-07-17 01:20:15
【问题描述】:
考虑这段代码:
class Program
{
static void Main(string[] args)
{
Person person = new Teacher();
person.ShowInfo();
Console.ReadLine();
}
}
public class Person
{
public void ShowInfo()
{
Console.WriteLine("I am Person");
}
}
public class Teacher : Person
{
public new void ShowInfo()
{
Console.WriteLine("I am Teacher");
}
}
当我运行这段代码时,会输出以下内容:
我是人
但是,您可以看到它是 Teacher 的实例,而不是 Person 的实例。为什么代码会这样做?
【问题讨论】:
-
一个Java人的问题:Console.ReadLine();这个例子有必要吗?
-
@Shahrooz 我无法回答您的问题 - 我不懂 C#。我在问一个非常琐碎的 C# 问题,即是否需要在 main 方法中调用 ReadLine 才能在 Person 和 Teacher 类中调用 WriteLine。
-
是的,当 Main() 退出时,.Net 会自动关闭控制台窗口。为了解决这个问题,我们使用 Console.Read() 或 Console.Readline() 来等待额外的输入,以便控制台保持打开状态。
-
@Rich 不,这不是必要的,但您经常会看到它,原因是:从 Visual Studio 运行控制台程序时,程序终止时命令窗口直接关闭离开,所以如果你想看到程序输出你需要告诉它等待。
-
@AakashM 谢谢 - 我把时间花在 Eclipse 中,控制台是 Eclipse 窗口的一部分,因此不会关闭。这很有道理。
标签: c# class derived-class