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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李永涛 于 2012-11-29 22:03 编辑

结构和类有什么区别呢?感觉他们作用都相似······

评分

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

查看全部评分

11 个回复

倒序浏览
结构体在传输数据的时候是copy数据,而不是如类一样给引用,所以不需要担心资源释放。同时结构没有多态特性,所以在调用方法的时候性能会更好。
比如我们为了存储一个人的信息,要声明一组变量,姓名,性别,年龄等,当我们要存储n个人的信息时候就要声明n组变量,很麻烦.并且存存储一个人信息
的这几个变量间没有关系容易记乱.所以我们需要定义一个结构体来统一这些信息格式.

评分

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

查看全部评分

回复 使用道具 举报
类和结构主要的特点就是可以定义自己的类型。但是类具有成员函数,而结构体没有成员函数,而且类里面的数据成员默认是私有成员,而结构体的默认是公有的。类可以实现继承,结构体不行,不过也可以完成相同的形式。

评分

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

查看全部评分

回复 使用道具 举报
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型.类是引用类型。虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object 。

评分

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

查看全部评分

回复 使用道具 举报
最大的区别就是:结构是值类型,它的实例对象是存储在栈中的;而类是引用类型,它的实例对象时存在托管堆中的

评分

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

查看全部评分

回复 使用道具 举报
张青江 来自手机 中级黑马 2012-11-29 11:26:07
地板
要多了解这个!,很重要的。
来自:黑马程序员训练营论坛 Windows Phone 7 客户端来自: WindowsPhone客户端
回复 使用道具 举报
类是一种“引用类型”。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时,新变量引用的是原始对象。通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。

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

评分

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

查看全部评分

回复 使用道具 举报
杨占伟 发表于 2012-11-28 20:42
结构体在传输数据的时候是copy数据,而不是如类一样给引用,所以不需要担心资源释放。同时结构没有多态特性 ...

谢谢了····理解中
回复 使用道具 举报
黑马-张扬 发表于 2012-11-29 11:30
类是一种“引用类型”。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时, ...

谢谢了····理解中
回复 使用道具 举报
黑马_黄开潮 发表于 2012-11-28 21:28
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,str ...

谢谢了····理解中
回复 使用道具 举报
陈辉 发表于 2012-11-29 10:12
最大的区别就是:结构是值类型,它的实例对象是存储在栈中的;而类是引用类型,它的实例对象时存在托管堆中 ...

谢谢了····理解中
回复 使用道具 举报
Jam 中级黑马 2012-11-30 20:10:48
12#
1.类型不同
2.结构永远都会有一个默认的无参构造函数,所以就不能再定义一个无参的构造函数
3.如果要是用结构的构造函数来创键对象 就必须要为结构的每个字段赋值
4.如果不用构造函数来创键对象,那也必须在使用它之前赋值
我记得的就这些区别了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马