C# 从父类c调用dervied方法#
我在父类中定义了C# 从父类c调用dervied方法#,c#,inheritance,C#,Inheritance,我在父类中定义了ToString(),它几乎适用于它的所有子类,这通常涉及调用名为Name的属性。此属性在子类中重新定义 但是,这不起作用,因为总是使用父类的Name属性,即使我在子类中重新定义了它 以下是一个例子: using System; namespace test { class Program { static void Main(string[] args) { Bar n = new Bar();
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#?中继承的一个基本方面,这是因为
ToString()
是
将
virtual
关键字添加到基本属性中,并将派生属性中的new
更改为override
。发生这种情况的原因是ToString()
不可用
将
virtual
关键字添加到基本属性中,并将派生属性中的new
更改为override
。是的,我不理解virtual。现在我知道了。谢谢是的,我不明白。现在我知道了。谢谢