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

面试题 相关文章推荐
What is the purpose of Void class? Void类的作用是什么?
Oct 31 面试题
SQL数据库笔试题
Mar 08 面试题
CLR与IL分别是什么含义
Aug 23 面试题
关于递归的一道.NET面试题
May 12 面试题
.NET里面如何取得当前的屏幕分辨率
Dec 06 面试题
武汉某公司的C#笔试题面试题
Dec 25 面试题
C#中的验证控件有几种
Mar 08 面试题
常用UNIX 命令(Linux的常用命令)
Jul 10 面试题
介绍一下grep命令的使用
Jun 28 面试题
什么是设计模式
Jun 17 面试题
怎样声明一个匿名的内部类
Jun 01 面试题
java程序员面试交流
Nov 29 面试题
C#的几个面试问题
May 22 #面试题
C#可否对内存进行直接的操作
Feb 26 #面试题
C#中有没有静态构造函数,如果有是做什么用的?
Jun 04 #面试题
一套C#面试题
Oct 09 #面试题
在C#中如何实现多态
Jul 02 #面试题
使用C#编写创建一个线程的代码
Jan 22 #面试题
编程实现去掉XML的重复结点
May 28 #面试题
You might like
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
Python文本相似性计算之编辑距离详解
2016/11/28 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
Python 求数组局部最大值的实例
2019/11/26 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
索桥的故事教学反思
2014/02/06 职场文书
实习生求职自荐信
2014/02/07 职场文书
电子信息工程自荐信
2014/05/26 职场文书
挂职学习心得体会
2014/09/09 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle
Python语言中的数据类型-序列
2022/02/24 Python