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...

面试题 相关文章推荐
xml有哪些解析技术?区别是什么
Apr 26 面试题
C/C++ 笔试、面试题目大汇总
Nov 21 面试题
什么是重载?CTS、CLS和CLR分别做何解释
May 06 面试题
.net C#面试题
Aug 28 面试题
北京某科技有限公司C# .net笔试题
Sep 27 面试题
什么是虚拟内存?虚拟内存有什么优势?
Feb 09 面试题
软件测试面试题
Oct 21 面试题
在weblogic中发布ejb需涉及到哪些配置文件
Jan 17 面试题
腾讯公司的一个sql题
Jan 22 面试题
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
Feb 16 面试题
UNIX文件系统分类
Nov 11 面试题
创联软件面试题笔试题
Oct 07 面试题
C#的几个面试问题
May 22 #面试题
C#可否对内存进行直接的操作
Feb 26 #面试题
C#中有没有静态构造函数,如果有是做什么用的?
Jun 04 #面试题
一套C#面试题
Oct 09 #面试题
在C#中如何实现多态
Jul 02 #面试题
使用C#编写创建一个线程的代码
Jan 22 #面试题
编程实现去掉XML的重复结点
May 28 #面试题
You might like
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
js Math 对象的方法
2013/09/01 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python实现的简单抽奖系统实例
2015/05/22 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python3最长回文子串算法示例
2019/03/04 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
军校本科大学生自我评价
2014/01/14 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
收款授权委托书
2014/10/02 职场文书
2014年护士长工作总结
2014/11/11 职场文书
骨干教师申报材料
2014/12/17 职场文书
云台山导游词
2015/02/03 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
Oracle锁表解决方法的详细记录
2022/06/05 Oracle