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

面试题 相关文章推荐
开发中都用到了那些设计模式?用在什么场合?
Aug 21 面试题
2019年c语言经典面试题目
Aug 17 面试题
武汉东之林科技有限公司机试
Sep 17 面试题
介绍一下linux的文件系统
Mar 20 面试题
Linux面试题LINUX系统类
Nov 19 面试题
Linux机考试题
Oct 16 面试题
软件测试英文面试题
Oct 14 面试题
int和Integer有什么区别
May 25 面试题
Overload和Override的区别
Sep 02 面试题
中间件的定义
Aug 09 面试题
Java程序员面试90题
Oct 19 面试题
介绍下static、final、abstract区别
Jan 30 面试题
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 curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
调试php程序的简单步骤
2019/10/04 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
由document.body和document.documentElement想到的
2009/04/13 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
小程序实现录音功能
2020/09/22 Javascript
go和python变量赋值遇到的一个问题
2017/08/31 Python
详解python的ORM中Pony用法
2018/02/09 Python
Python3爬虫学习入门教程
2018/12/11 Python
python 日期排序的实例代码
2019/07/11 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Django REST framwork的权限验证实例
2020/04/02 Python
Html5页面中的返回实现的方法
2018/02/26 HTML / CSS
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
大二学期个人自我评价
2014/01/13 职场文书
四年级评语大全
2014/04/21 职场文书
关爱留守儿童标语
2014/06/18 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
学术研讨会欢迎词
2015/01/26 职场文书