C#中类(class)与结构(struct)的异同


Posted in 面试题 onNovember 03, 2013
1.值类型与引用类型
结构Struct是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型
类Class是引用类型:引用类型在堆上分配地址
堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用
1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object
2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用
2.继承性
结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed .
类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承
3.内部结构:
结构:
没有默认的构造函数,但是可以添加构造函数
没有析构函数
没有 abstract 和 sealed(因为不能继承)
不能有protected 修饰符
可以不使用new 初始化
在结构中初始化实例字段是错误的
类:
有默认的构造函数
有析构函数
可以使用 abstract 和 sealed
有protected 修饰符
必须使用new 初始化

Tags in this post...

面试题 相关文章推荐
使用useBean标志初始化BEAN时如何接受初始化参数
Feb 11 面试题
什么是Deployment descriptors;都有什么类型的部署描述符
Jul 28 面试题
联想C++笔试题
Jun 13 面试题
*p++ 自增p 还是p所指向的变量
Jul 16 面试题
一套C++笔试题面试题
Jun 06 面试题
STP协议的主要用途是什么?为什么要用STP
Dec 20 面试题
接口可以包含哪些成员
Sep 30 面试题
linux面试题参考答案(7)
Jul 24 面试题
Linux面试题LINUX系统类
Nov 19 面试题
软件测试有哪些?什么是配置项?
Feb 12 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
Oct 31 面试题
UNIX特点都有哪些
Apr 05 面试题
C#的几个面试问题
May 22 #面试题
C#可否对内存进行直接的操作
Feb 26 #面试题
C#中有没有静态构造函数,如果有是做什么用的?
Jun 04 #面试题
一套C#面试题
Oct 09 #面试题
在C#中如何实现多态
Jul 02 #面试题
使用C#编写创建一个线程的代码
Jan 22 #面试题
编程实现去掉XML的重复结点
May 28 #面试题
You might like
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
angular2中Http请求原理与用法详解
2018/01/11 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
python中私有函数调用方法解密
2016/04/29 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Python中turtle库的使用实例
2019/09/09 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
了解一下python内建模块collections
2020/09/07 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
德国网上宠物店:Zoobio
2018/05/23 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
大学生求职意向书
2015/05/11 职场文书
领导离职感言
2015/08/03 职场文书