class Dog
{
public virtual void SayHi()
{
Console.WriteLine("i am the dog");
}
public override void SayHi()
{
Console.WriteLine("i am the minidog");
}
{
public virtual void SayHi()
{
Console.WriteLine("i am the dog");
}
}
class MiniDog:Dog
{public override void SayHi()
{
Console.WriteLine("i am the minidog");
}
}
class something<T> where T : Dog, new()
{
T t = new T();
public something()
{
t.SayHi();
}
static void Main(string[] args)
{
List<MiniDog> list = new List<MiniDog>();
}
结果输出什么? ...当Dog类中的SayHi方法不是虚方法,输出是什么
答案分别是 i am the minidog 和i am the dog
总结: 符合里氏原则, where T : Dog, new(), T 是Dog类时 T t = new T(); 和 Dog t=new T();