我有这个代码。我不明白为什么派生类的打印不被称为。我相信这是因为' new'。我不确定它的功能。
using System;
class BaseClass
{
public void Print()
{
System.Console.WriteLine("BaseClass");
}
}
class DerivedClass : BaseClass
{
new public void Print()
{
System.Console.WriteLine("DerivedClass");
}
}
class Program
{
public static void Main()
{
BaseClass b;
b = new BaseClass();
b.Print();
b = new DerivedClass();
b.Print();
}
}
答案 0 :(得分:3)
因为Print
方法不是虚拟的,并且您明确将其标记为完全独立于基类'具有new
关键字的方法。将方法更改为虚拟并在派生类中覆盖它:
class BaseClass
{
public virtual void Print()
{
System.Console.WriteLine("BaseClass");
}
}
class DerivedClass : BaseClass
{
public override void Print()
{
System.Console.WriteLine("DerivedClass");
}
}
答案 1 :(得分:0)
是的,因为你的b是=IFERROR([formula],"")
BaseClass
而且你没有Type
功能virtual
,而你却没有Print
它在override
中,将被称为DerivedClass
BaseClass
。