请教一个引用类型转换的问题!
今天学引用类型转换的时候,其中有点总是无法理解,以下是我的代码:
class Program
{
static void Main(string[] args)
{
Person[] pers = new Person[4];//定义一个Person类数组
Chinese ch1 = new Chinese();
Chinese ch2 = new Chinese();
Japanese jp1 = new Japanese();
Japanese jp2 = new Japanese();
pers[0] = ch1;
pers[1] = ch2;
pers[2] = jp1;
pers[3] = jp2;
for (int i = 0; i<pers.length;i++)
{
if(pers[i] is Chinese)
{
Chinese c = pers[i] as Chinese;
c.SayHello();
}
else if (pers[i] is Japanese)
{
Japanese j = pers[i] as Japanese;
j.SayJapanese();
}
}
Console.ReadKey();
}
}
class Person
{
}
class Chinese
{
public void SayHello()
{
Console.WriteLine("你好,我是中国人!");
}
}
class Japanese: Person
{
public void SayJapanese()
{
Console.WriteLine("阿里阿多!");
}
}[/size]
由于不知道为何不能粘贴代码,我只好手动写了这些,格式有不清楚的地方请各位见谅。
这里我搞不明白的地方就是我用红色标起的地方,既然已经定义了if(pers[i] is Chinese)为什么还要再对pers[i]进行一次强制转换才能赋值给c?请各位高手帮忙解答一下,谢谢。