【C#】里氏转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/as15932641664/article/details/80988029

  里氏转换


   今天学习了里氏转换,对于平常看C#视频一集看3、4分钟大脑容量就已充满的我来说,一下子看了半个多小时,破纪录了,哈哈!


   C#视频中分为基类(父类)和派生类(子类),如果子类想要调用父类中的某些方法或某些东西,是不能直接调用的,这时候就需要将子类转换成父类,在通过父类去调用。里面的转换就是所谓的里氏转换。


   如图所示(person是父类,student和teacher是子类),下面依次列出了里氏准换的4种情况,其中1,3是成功的,2和4转换不了





   2失败的原因:从图中可以看出person父类要转换成teacher子类,但转换的时候却转换了student子类。就比如我想变成一个超人,你却把我变成了芭比公主,变错了!


   4失败的原因:父类不能直接变子类,要先new你要变成哪个子类


   判断

      写代码时,代码当时可能不报错,但一 运行起来就会报错。所以设置一个判断,如有错了提示“转换不了”,否则转换。代码如下所示:




as也是转换,但如果转换不了的不报异常,返回来null

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

猜你喜欢

转载自blog.csdn.net/as15932641664/article/details/80988029