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。现在我知道了。谢谢是的,我不明白。现在我知道了。谢谢