我正在用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"作为输出?
你需要override虚拟财产而不是new一个:
public override string str
{
get
{
return "DerivedClass";
}
}
Run Code Online (Sandbox Code Playgroud)