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

面试题 相关文章推荐
WebSphere 应用服务器都支持哪些认证
Dec 26 面试题
联想C++笔试题
Jun 13 面试题
下述程序的作用是计算机数组中的最大元素值及其下标
Nov 26 面试题
空指针到底是什么
Aug 07 面试题
怎样在程序里获得一个空指针
Jan 24 面试题
西部世纪.net笔试题面试题
Apr 03 面试题
接口可以包含哪些成员
Sep 30 面试题
C# Debug和Testing相关面试题
Oct 25 面试题
C#面试题问题集
Apr 02 面试题
一套软件测试笔试题
Jul 25 面试题
网友共享的几个面试题关于Java和Unix等方面的
Sep 08 面试题
介绍一下Java中标识符的命名规则
Feb 03 面试题
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获取http请求的头信息实现步骤
2012/12/16 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
一段实时更新的时间代码
2006/07/07 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python地图绘制实操详解
2019/03/04 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
商业活动邀请函
2014/02/04 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
2014年个人委托书范本
2014/10/13 职场文书
离婚民事起诉状
2015/08/03 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书