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

面试题 相关文章推荐
几个SQL的面试题
Mar 08 面试题
为数据库创建索引都需要注意些什么
Jul 17 面试题
什么是WEB控件?使用WEB控件有哪些优势?
Jan 21 面试题
网络方面基础面试题
Nov 16 面试题
网络安全方面的面试题
Jan 07 面试题
Linux如何命名文件--使用文件名时应注意
Jan 22 面试题
海量信息软件测试笔试题
Aug 08 面试题
什么是组件架构
May 15 面试题
DOM和JQuery对象有什么区别
Nov 11 面试题
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
Apr 13 面试题
编程输出如下图形
Nov 24 面试题
介绍一下Java中的static关键字
May 12 面试题
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中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
军训口号
2014/06/13 职场文书
活动费用申请报告
2015/05/15 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
python基础入门之普通操作与函数(三)
2021/06/13 Python
防止web项目中的SQL注入
2021/12/06 MySQL
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers