1
我有ToString()
定義在一個父類中的方式適用於幾乎所有的後代類,通常涉及調用名爲名稱的屬性。該屬性在子類中重新定義。從父類調用dervied方法c#
但是,這不起作用,因爲始終使用來自父類的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#中繼承的基本方面?
是的,我不明白虛擬。現在我知道了。謝謝! – longneck