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

面试题 相关文章推荐
可以在一个PHP文件里面include另外一个PHP文件两次吗
May 22 面试题
如何提高JDBC的性能
Apr 30 面试题
Java提供了哪些企业应用编程接口
Feb 13 面试题
extern在函数声明中是什么意思
Jan 19 面试题
对于没有初始化的变量的初始值可以作怎样的假定
Oct 12 面试题
阿尔卡特(中国)的面试题目
Aug 20 面试题
武汉英思工程科技有限公司–ORACLE面试测试题目
Apr 30 面试题
北京一家公司的.net开发工程师笔试题
Apr 17 面试题
什么是Assembly(程序集)
Sep 14 面试题
介绍一下MD5加密算法
Nov 12 面试题
linux面试题参考答案(7)
Oct 29 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
Nov 17 面试题
C#的几个面试问题
May 22 #面试题
C#可否对内存进行直接的操作
Feb 26 #面试题
C#中有没有静态构造函数,如果有是做什么用的?
Jun 04 #面试题
一套C#面试题
Oct 09 #面试题
在C#中如何实现多态
Jul 02 #面试题
使用C#编写创建一个线程的代码
Jan 22 #面试题
编程实现去掉XML的重复结点
May 28 #面试题
You might like
动态新闻发布的实现及其技巧
2006/10/09 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
PHP常用的小程序代码段
2015/11/14 PHP
PHP实现的策略模式示例
2019/03/20 PHP
javascript 自定义事件初探
2009/08/21 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
Python实现将文本生成二维码的方法示例
2017/07/18 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
python查看模块安装位置的方法
2018/10/16 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
医科大学生的自我评价
2013/12/04 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
小学新教师培训方案
2014/02/03 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
学生自我评语大全
2014/04/18 职场文书
社保委托书怎么写
2014/08/02 职场文书
上班离岗检讨书
2014/09/10 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
闪闪的红星观后感
2015/06/08 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python