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

面试题 相关文章推荐
简述synchronized和java.util.concurrent.locks.Lock的异同
Dec 08 面试题
写出二分查找算法的两种实现
May 13 面试题
.NET面试10题
Feb 24 面试题
最新远光软件笔试题面试题内容
Nov 08 面试题
.NET面试题:什么是值类型和引用类型
Jan 12 面试题
请解释virtual关键字的含义
Jun 17 面试题
盛大二次面试题
Nov 18 面试题
几道Web/Ajax的面试题
Nov 05 面试题
Python里面如何实现tuple和list的转换
Jun 13 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
May 20 面试题
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
Oct 12 面试题
一个J2EE项目团队的主要人员组成是什么
Jun 04 面试题
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下过滤HTML代码的函数
2007/12/10 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
javascript 学习笔记(onchange等)
2010/11/14 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
nodejs基础知识
2017/02/03 NodeJs
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
详解Python爬虫的基本写法
2016/01/08 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
super()与this()的区别
2016/01/17 面试题
护理学毕业生求职信
2013/11/14 职场文书
电子信息毕业生自荐信
2013/11/16 职场文书
实习生个人的自我评价
2013/12/08 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android