A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何学强 中级黑马   /  2012-9-29 16:11  /  2032 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

.net中类和结构有什么区别

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
雷向阳 来自手机 中级黑马 2012-9-29 17:32:37
藤椅
类是引用类型,结构是值类型。结构无构造函数,类没有。。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
补充楼上两位同学所说的:
结构类型不支持用户指定的继承,并且所有结构类型都隐式地从类型 object 继承。--C#4.0语言规范 p25

意思就是程序员不能显式手动的继承一个类。
回复 使用道具 举报
结构:结构是值类型,值类型在栈上分配实例,不能从另外一个结构或者类继承,本身也不能被继承,虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一       样,没有默认的构造函数,但是可以添加构造函数,没有析构函数
类:类是引用类型,引用类型在堆上分配实例----------(结构没有的我都有{:soso_e144:})
堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑
总结:
在表现抽象和多级别的对象层次时,类是最好的选择
多数情况下该类型只是一些数据时,结构是最佳的选择
栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马