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

面试题 相关文章推荐
介绍一下游标
Jan 10 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述。
Nov 09 面试题
上海微创软件面试题
Jun 14 面试题
武汉某公司的C#笔试题面试题
Dec 25 面试题
配置管理计划的主要内容有哪些
Jun 20 面试题
恒华伟业笔试面试题
Feb 26 面试题
为什么需要版本控制
Oct 28 面试题
客服端调用EJB对象的几个基本步骤
Jan 15 面试题
AJAX应用和传统Web应用有什么不同
Aug 24 面试题
什么是lambda函数
Sep 17 面试题
几道Java和数据库的面试题
May 30 面试题
Java基础类库面试题
Sep 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python编写屏幕截图程序方法
2015/02/18 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
Django中的静态文件管理过程解析
2019/08/01 Python
简单的Python调度器Schedule详解
2019/08/30 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
python怎么自定义捕获错误
2020/06/29 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
在职人员函授期间自我评价分享
2013/11/08 职场文书
《晏子使楚》教学反思
2014/02/08 职场文书
职业生涯规划书范文
2014/03/10 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python