C#里氏转换原则

 

显示转换:父类对象转换为子类类型必须使用强制转换

            Person p = new Teacher();
            Teacher t = (Teacher)p;    //如果new的时候是new的是子类,那么在转换这个子类的时候可以
            t.SayHi();

 

            Person p = new Teacher();
            Student stu = (Student)p;      //如果new的是子类,转换的时候,转的另一个子类,报异常
            stu.SayHello();
            Console.ReadKey();

 

            Person p = new Person();

            Student stu = (Student)p;//父类对象不能直接转换子类
            stu.SayHello();

隐式转换:子类对象转换为父类类型可以直接转

    Student stu = new Student();
            Person p = stu;
            p.Show();
            Console.ReadKey();

 

 is转换:返回的是bool值,true为能转换,false不能转换

  //关键字is判断能否转换
            Person p = new Student();
            bool result = p is Teacher;
            if (result )
            {
                Teacher t =(Teacher )p;
                t.SayHi();
            }
            else
            {
                Console.WriteLine("转换不了");
            }
            Console.ReadKey();

as转换:直接转换,写代码的时候不会报异常

//关键字as转换
Teacher t = new Teacher();//子类转换为父类
Person p = t as Person;
p.PerShow();

Person p = new Teacher();//父类转换为子类
Teacher t = p as Teacher;
t.TeaShow();

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值