黑马程序员技术交流社区

标题: 在dotnet中类(class)与结构(struct)的异同? [打印本页]

作者: 鸡蛋壳    时间: 2013-12-15 18:04
标题: 在dotnet中类(class)与结构(struct)的异同?
本帖最后由 鸡蛋壳 于 2013-12-16 15:04 编辑

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


作者: 许庭洲    时间: 2013-12-15 18:39
1. Class可以被是实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。
2. Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。
作者: 王子斌    时间: 2013-12-15 20:44
 我们可以简单的理解,class是一个可以动的机器,有行为,有多态,有继承; 而struct就是个零件箱,组合了不同结构的零件。其实,class和struct最本质的区别就在于class是引用类型,内存分配于托管堆; 而struct是值类型,内存分配于线程的堆栈上
作者: y494890511    时间: 2013-12-15 22:18
1.类是存储在堆上的引用类型
2.结构是存储在栈上的值类型
3.结构不支持继承,类可以继承
4.较小的数据类型使用结构可以提高性能
5.结构和类非常相似,主要区别是使用关键字struct代替class来声明结构
6.结构和类都使用new来声明实例
作者: §風過無痕§    时间: 2013-12-15 23:53
类型不同

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

在内存中的分配不同

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

结构(struct)可以看着是一个受限制的小类  呵呵  个人观点
作者: yuanlianxi03    时间: 2013-12-16 09:09
struct是结构类型,它属于值类型

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

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

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

关于内存分配,值类型的局部变量是在线程栈上分配的,所有引用类型都是在托管堆中存放
作者: 岁月渲染    时间: 2013-12-16 13:13
Class类可以被实例化,属于引用类型,分配内存在堆上,类是引用传递。
Struct结构是值类型,分配内存在栈上,结构体是复制传递的,Int32、Boolean等都是结构体。
作者: 刘安成    时间: 2013-12-16 13:18
我来总结补充一下: 1、结构体是值类型,类是引用类型. 2、结构体不能带有无参的构造函数,但是类可以。 3、结构体不可以实现类似于类的继承,但是可以继承接口




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2