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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鸡蛋壳 中级黑马   /  2013-12-15 18:04  /  1777 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 鸡蛋壳 于 2013-12-16 15:04 编辑

dotnet中类(class)与结构(struct)的异同?

评分

参与人数 1技术分 +2 收起 理由
陈福军 + 2

查看全部评分

8 个回复

倒序浏览
1. Class可以被是实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。
2. Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。
回复 使用道具 举报
 我们可以简单的理解,class是一个可以动的机器,有行为,有多态,有继承; 而struct就是个零件箱,组合了不同结构的零件。其实,class和struct最本质的区别就在于class是引用类型,内存分配于托管堆; 而struct是值类型,内存分配于线程的堆栈上

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
1.类是存储在堆上的引用类型
2.结构是存储在栈上的值类型
3.结构不支持继承,类可以继承
4.较小的数据类型使用结构可以提高性能
5.结构和类非常相似,主要区别是使用关键字struct代替class来声明结构
6.结构和类都使用new来声明实例

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报 1 0
类型不同

一个可以被继承  一个不可以

在内存中的分配不同

声明实例是类(class)必须用new  而结构(struct)可以不用

结构(struct)可以看着是一个受限制的小类  呵呵  个人观点

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
struct是结构类型,它属于值类型

class是类类型,它属于引用类型

结构类型不能继承其他的类型,只能直接继承System.VauleType,结构类型也不能被其他类型继承,因为所有结构都是密封的。

类类型的限制没有那么多,可以使用的功能也更多。

关于内存分配,值类型的局部变量是在线程栈上分配的,所有引用类型都是在托管堆中存放

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
Class类可以被实例化,属于引用类型,分配内存在堆上,类是引用传递。
Struct结构是值类型,分配内存在栈上,结构体是复制传递的,Int32、Boolean等都是结构体。
回复 使用道具 举报
我来总结补充一下: 1、结构体是值类型,类是引用类型. 2、结构体不能带有无参的构造函数,但是类可以。 3、结构体不可以实现类似于类的继承,但是可以继承接口

评分

参与人数 1技术分 +2 收起 理由
陈福军 + 2 不错继续努力 黑马期待你的加入.

查看全部评分

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