黑马程序员技术交流社区

标题: 结构和类的一些疑问 [打印本页]

作者: 管章鹏    时间: 2013-4-2 10:01
标题: 结构和类的一些疑问
在学习面向对象的时候发现结构和类在一些功能方法上非常的相似,
我想问一下大神们,什么时候该用结构什么时候该用类呢?困扰我好久了,
希望大神们予以解答,非常感谢!
作者: DWC_5101    时间: 2013-4-2 10:28
结构体相对于类的区别:
1.结构的构造函数和类的构造函数不同。
   a.结构不能包含显式的无参数构造函数。结构成员讲自动初始化为它们的默认值。
   b.结构不能包含以下形式的初始值设定类:base(argument-list);
2.对于结构中的实例字段成员,不能在声明时赋值初始化。
3.声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
4.结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。但是,结构从基类OBJECT继承。结构也可以实现接口。
5、结构在堆栈中创建,是值类型,而类是引用类型。

使用结构体的场合:当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。其他场合,用类比较好。
作者: 张正强    时间: 2013-4-2 23:10
Class  属于引用类型,是分配在内存的堆上的.是引用传递的。
Struct 属于值类型,是分配在内存的栈上的.结构体是复制传递的。不具备继承其他结构或者类的结构;结构不能定义析构函数;不能定义新虚方法和抽象方法但可以System.Object中的虚方法;不能拥有无参数的构造函数因为已经默认有无参数的构造函数;不用为成员变量定义初始值(默认为0);常用于存储数据的集合如:Int32、Boolean、DateTime 等。
作者: 管章鹏    时间: 2013-4-5 18:30
什么时候使用类什么时候使用结构:呵呵,看到老师讲的视频才明白,现在总结一下吧
1.考虑是否需要使用面向对象的特性:封装、继承、多态。,如果需要在某些情况下被继承或者使用多态等特性则只能用类。应为结构不能被继承
2.当类型中(类或结构)的成员比较多的时候,则考虑使用类。

类和结构最大的区别是类是引用类型,结构是值类型;




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