一、定义和使用非常相似:
1.定义和使用:
public struct Student { string Name; int Age; } public class Student2 { string Name; int Age; } Student student = new Student(); Student2 student2 = new Student2();
2.都可以包含其他数据类型作为成员
3.都拥有成员,包括:构造函数(C#10)、方法、属性、字段、常量、枚举、事件以及事件处理函数。
4.两者的成员都有各自取值范围。比如一个成员为public一个为private
5.都可以实现接口
6.两者都可以公开一个默认属性
7.两者都可以声明和触发事件,而且两者都可以声明委托
二、主要区别:
1.结构体是值类型,类是引用类型。
2.所有结构成员默认都是public,类的变量和常量默认private
3.结构体成员不能被声明为protected
4.结构体变量声明不能指定初始值、使用new关键字初始化
5.结构体不能声明默认构造函数,也就是不能有参数不全的构造函数
6.结构体不能有析构函数
7.结构体无法被继承
8.结构体不会终止,CLR不会回收结构体
9.结构没有abstract和sealed,可以不用new初始化,类必须使用new初始化
三、如何选择:
1.堆栈空间有限,对于大量的逻辑对象,创建类比结构好一些。
2.结构表示如点、矩形颜色这样的轻量对象,例如:如果声明一个含有1000个点对象的数组,则将为引用每个对象分配附加的内存。在此情况下,结构的成本比较低。
3.在表现抽象和多级别的对象层次时,类是最好的选择
4.大多数情况下该类型只是一些数据时,结构是最佳选择
浙公网安备 33010602011771号