Chinese ch= new Chinese();
//隐式转换,把子类变量赋值给父类变量
Person p = ch;
//显式转换,把父类变量赋值给子类变量
Person p = new Chinese();
Chinese ch = (Chinese)p;
//如果对象不在同一个继承树路径上
//则不能强制类型转换
Dog g = new Dog();
Chinese ch = (Chinese)g;//错误
//is运算
if(p is Chinese)
{
Console.WriteLine("中国人");
}
else if(p is Korean)
{
Console.WriteLine("韩国人");
}
//as 运算符
Chinese ch = p as Chinese ;
if(ch!=null)
{
Console.WriteLine("中国人");
}
Korean ch = p as Korean ;
if(ch!=null)
{
Console.WriteLine("韩国人");
}
1、()转换和as 转换的区别:如果转换失败()会报异常,而as则会返回null。
2、if (p1 is Chinese)//is运算符结果就是bool,表示是否是指定的类型。is用来判断变量指向的对象是否是指定的类型或者指定类型子类类型。as可以起到判断类型和转换的双重作用。