黑马程序员技术交流社区

标题: 结构和类有什么区别呢?感觉他们作用都相似 [打印本页]

作者: 李永涛    时间: 2012-11-28 20:28
标题: 结构和类有什么区别呢?感觉他们作用都相似
本帖最后由 李永涛 于 2012-11-29 22:03 编辑

结构和类有什么区别呢?感觉他们作用都相似······
作者: 杨占伟    时间: 2012-11-28 20:42
结构体在传输数据的时候是copy数据,而不是如类一样给引用,所以不需要担心资源释放。同时结构没有多态特性,所以在调用方法的时候性能会更好。
比如我们为了存储一个人的信息,要声明一组变量,姓名,性别,年龄等,当我们要存储n个人的信息时候就要声明n组变量,很麻烦.并且存存储一个人信息
的这几个变量间没有关系容易记乱.所以我们需要定义一个结构体来统一这些信息格式.

作者: 婂埖糖    时间: 2012-11-28 21:07
类和结构主要的特点就是可以定义自己的类型。但是类具有成员函数,而结构体没有成员函数,而且类里面的数据成员默认是私有成员,而结构体的默认是公有的。类可以实现继承,结构体不行,不过也可以完成相同的形式。

作者: 黑马_黄开潮    时间: 2012-11-28 21:28
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型.类是引用类型。虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object 。
作者: 陈辉    时间: 2012-11-29 10:12
最大的区别就是:结构是值类型,它的实例对象是存储在栈中的;而类是引用类型,它的实例对象时存在托管堆中的
作者: 张青江    时间: 2012-11-29 11:26
要多了解这个!,很重要的。
来自:黑马程序员训练营论坛 Windows Phone 7 客户端
作者: 黑马-张扬    时间: 2012-11-29 11:30
类是一种“引用类型”。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时,新变量引用的是原始对象。通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。

结构是一种值类型。创建结构时,结构赋值到的变量保存该结构的实际数据。将结构赋给新变量时,将复制该结构。因此,新变量和原始变量包含同一数据的两个不同的副本。对一个副本的更改不影响另一个副本。

作者: 李永涛    时间: 2012-11-29 22:04
杨占伟 发表于 2012-11-28 20:42
结构体在传输数据的时候是copy数据,而不是如类一样给引用,所以不需要担心资源释放。同时结构没有多态特性 ...

谢谢了····理解中
作者: 李永涛    时间: 2012-11-29 22:04
黑马-张扬 发表于 2012-11-29 11:30
类是一种“引用类型”。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时, ...

谢谢了····理解中
作者: 李永涛    时间: 2012-11-29 22:05
黑马_黄开潮 发表于 2012-11-28 21:28
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,str ...

谢谢了····理解中
作者: 李永涛    时间: 2012-11-29 22:05
陈辉 发表于 2012-11-29 10:12
最大的区别就是:结构是值类型,它的实例对象是存储在栈中的;而类是引用类型,它的实例对象时存在托管堆中 ...

谢谢了····理解中
作者: Jam    时间: 2012-11-30 20:10
1.类型不同
2.结构永远都会有一个默认的无参构造函数,所以就不能再定义一个无参的构造函数
3.如果要是用结构的构造函数来创键对象 就必须要为结构的每个字段赋值
4.如果不用构造函数来创键对象,那也必须在使用它之前赋值
我记得的就这些区别了





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