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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 管章鹏 中级黑马   /  2013-4-2 10:01  /  1161 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学习面向对象的时候发现结构和类在一些功能方法上非常的相似,
我想问一下大神们,什么时候该用结构什么时候该用类呢?困扰我好久了,
希望大神们予以解答,非常感谢!

3 个回复

倒序浏览
结构体相对于类的区别:
1.结构的构造函数和类的构造函数不同。
   a.结构不能包含显式的无参数构造函数。结构成员讲自动初始化为它们的默认值。
   b.结构不能包含以下形式的初始值设定类:base(argument-list);
2.对于结构中的实例字段成员,不能在声明时赋值初始化。
3.声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
4.结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。但是,结构从基类OBJECT继承。结构也可以实现接口。
5、结构在堆栈中创建,是值类型,而类是引用类型。

使用结构体的场合:当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。其他场合,用类比较好。

评分

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

查看全部评分

回复 使用道具 举报
Class  属于引用类型,是分配在内存的堆上的.是引用传递的。
Struct 属于值类型,是分配在内存的栈上的.结构体是复制传递的。不具备继承其他结构或者类的结构;结构不能定义析构函数;不能定义新虚方法和抽象方法但可以System.Object中的虚方法;不能拥有无参数的构造函数因为已经默认有无参数的构造函数;不用为成员变量定义初始值(默认为0);常用于存储数据的集合如:Int32、Boolean、DateTime 等。

评分

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

查看全部评分

回复 使用道具 举报
什么时候使用类什么时候使用结构:呵呵,看到老师讲的视频才明白,现在总结一下吧
1.考虑是否需要使用面向对象的特性:封装、继承、多态。,如果需要在某些情况下被继承或者使用多态等特性则只能用类。应为结构不能被继承
2.当类型中(类或结构)的成员比较多的时候,则考虑使用类。

类和结构最大的区别是类是引用类型,结构是值类型;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马