c# - 如何从派生类中获取属性值?

Kon*_*eth 1 c# inheritance

我正在用C#编写一个控制台应用程序.

这是代码:

interface ITest
{
    string str { get; }
}

public class BaseClass : ITest
{
    public virtual string str
    {
        get
        {
            return "BaseClass";
        }
    }
}

public class DerivedClass : BaseClass
{
    public new string str {
        get {
            return "DerivedClass";
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        ITest itest = new DerivedClass();

        Console.WriteLine(itest.str);
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,"BaseClass"将作为输出.相反,我如何获得"DerivedClass"作为输出?

Jan*_*nen 8

你需要override虚拟财产而不是new一个:

public override string str 
{
    get 
    {
        return "DerivedClass";
    }
}
Run Code Online (Sandbox Code Playgroud)