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面试题附答案
Jun 05 面试题
Ibatis如何调用存储过程
May 15 面试题
Java面试题:请问一下代码输出是什么
May 27 面试题
在C语言中实现抽象数据类型什么方法最好
Jun 26 面试题
东方通信股份有限公司VC面试题
Aug 27 面试题
.NET面试问题集
Dec 08 面试题
木马的传播途径主要有哪些
Apr 08 面试题
介绍一下MD5加密算法
Nov 12 面试题
remote接口和home接口主要作用
May 15 面试题
什么是Remote Module
Jun 10 面试题
万户网络JAVA程序员岗位招聘笔试试卷
Jan 08 面试题
Ruby如何定义一个类
Oct 08 面试题
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无限分类的类
2007/01/02 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
一些mootools的学习资源
2010/02/07 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
jquery中radio checked问题
2015/03/16 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
React 组件间的通信示例
2018/06/14 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
python相似模块用例
2016/03/04 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
Django的性能优化实现解析
2019/07/30 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
2020/03/30 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
小学教师培训方案
2014/06/09 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
感恩的心主题班会
2015/08/12 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle