【C#】面向对象(8)——对象的隐式转换和显式转换

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可以起到判断类型和转换的双重作用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值