主题:[讨论]请教一个问题,希望高手指点
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class C1
{
public virtual string show()
{
return "C1";
}
}
class C2 : C1
{
public new string show()
{
return "c2";
}
}
class C3 : C1
{
public override string show()
{
return "c3";
}
}
class Program
{
static void Main(string[] args)
{
C1[] obj = new C1[2];
obj[0] = new C2();
obj[1] = new C3();
Console.WriteLine(obj[0].show());
Console.WriteLine(obj[1].show());
}
}
}
结果是 C1
C3
请问为什么第一个输出的是C1,如果用new的话,不是把基类的show函数隐藏了吗?
它与重写虚函数有什么不同?
希望高手指点,谢谢!
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class C1
{
public virtual string show()
{
return "C1";
}
}
class C2 : C1
{
public new string show()
{
return "c2";
}
}
class C3 : C1
{
public override string show()
{
return "c3";
}
}
class Program
{
static void Main(string[] args)
{
C1[] obj = new C1[2];
obj[0] = new C2();
obj[1] = new C3();
Console.WriteLine(obj[0].show());
Console.WriteLine(obj[1].show());
}
}
}
结果是 C1
C3
请问为什么第一个输出的是C1,如果用new的话,不是把基类的show函数隐藏了吗?
它与重写虚函数有什么不同?
希望高手指点,谢谢!