我在父类中定义ToString()
的方式适用于几乎所有的后代类,这通常涉及调用名为Name的属性。此属性在子类中重新定义。
但是,这不起作用,因为始终使用父类的Name属性,即使我在后代类中重新定义它。
以下是一个例子:
using System;
namespace test
{
class Program
{
static void Main(string[] args)
{
Bar n = new Bar();
Console.WriteLine(n);
Console.ReadLine();
}
}
class Foo
{
public override string ToString()
{
return MyName;
}
public string MyName { get { return "foo"; }}
}
class Bar : Foo
{
public new string MyName { get { return "bar"; }}
}
}
此示例的输出为foo
,但我希望它为bar
。
我做错了什么?或者我只是误解了C#中继承的一个基本方面?