C# 面向对象(继承 和 as关键字)

举报
陈言必行 发表于 2021/08/14 01:05:52 2021/08/14
【摘要】 继承(extend):面向对象的三大特征之一。 继承的好处:提高了代码的复用性,让类与类之间产生了练习,为多态提供了前提 C#中不支持多继承(c++支持多继承) 不要单纯的为了提高代码的复用性而使用继承 结构的继承   使用结构的一个限制是结构不支持实现继承,但每个...
继承(extend):面向对象的三大特征之一。
继承的好处:提高了代码的复用性,让类与类之间产生了练习,为多态提供了前提
C#中不支持多继承(c++支持多继承)
不要单纯的为了提高代码的复用性而使用继承
结构的继承
  使用结构的一个限制是结构不支持实现继承,但每个结构都自动派生自System.ValueType。不能编码实现类型层次的结构,但结构可以实现接口。
继承的思想实现了属于(is-a)的关系,例如:犬科动物属于(is-a)动物,猫属于(is-a)犬科动物,因此猫属于(is-a) 动物

内存 :程序的运行会在内存中开辟空间

内存的划分:
1.寄存器,CPU处理
2.本地方法区;
3.方法区;
4.栈内存,局部变量 工作方式:先进后出,后进先出,(压栈,弹栈)
5.堆内存,
 
 
as关键字
 
定义:可以使用 as 运算符执行转换的某些类型在兼容之间的 引用类型 或可以为 null 的类型。
 
备注:as 运算符类似于 强制转换 操作。 但是,如果转换是不可能的,as 返回 null 而不引发异常。请注意 as 运算符执行只引用转换、nullable 转换和装箱转换。 as 运算符不能执行其他转换,如用户定义的转换,应是通过使用转换的表达式。
  expression as type
 
  expression is type ? (type)expression : (type)null
 
  这两个表达式是等效的,但 expression 变量只计算一次。
  示例:
  Object myObject = new Object(); //创建一个object对象
 
  ClassA a = myObject as ClassA; //将它转换为ClassA类型,此操作会失败,但不会抛异常,a会被设置为null
 
  a.ToString(); //访问a会抛出一个System.NullReferenceException异常
 
  as 的工作方式和强制类转换一样,但是它永远不会抛出一个异常,如果指定的操作不能正确地进行转换,那么得到的就是null,实际应用中通常会判断结果是否为 null;
 

 

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/76092215

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。