C# struct 与 class 与 enum 的区别

本质区别
class 是引用类型
struct 是值类型

什么是class–类
class 是面向对象编程的基本概念,是一种自定义数据结构类型,包含:字段,属性,构造函数,方法,索引器,操作符等。c#中所有的类继承自System.Object类,因此是一种引用类型,所以当new 一个对象时,对象保存了实例对象的实际数据的引用地址,而队像的值保存在托管堆中

什么是struct–结构
struct 是一种值类型,用于将一组相关信息的变量,组成一个单一的变量实体(化零为整),结构继承System.ValueType类,所以是一种值类型,struct 实例分配在线程的堆栈上(stack),他本身存储了值,但是没有该值的指针,所以struct 可以当做int,char,这样的基本类型类对待

值类型和引用类型

C# struct 与 class  与 enum 的区别

相同点与不同点
一)相同点:语法类似
二)不同点:
1.class是引用类型,继承自System.Object ; struct是值类型,继承自System.ValueType类,不具备多态
2.class 表现为行为方法。struct常用语数据存储。
3.class支持继承,可继承 类,接口;struct没有继承性,不能作为class基类,但支持接口继承
4.class支持生命无参构造函数,析构函数;struct只支持 有参构造函数
5.实例化,class使用new声明,struct不需要,
6.class可以实现抽象类,可以声明抽象函数,struct为抽象,不能声明抽象函数
7.class实例由垃圾回收机制来保证内存的回收处理,struct在使用完后自动解除内存分配。
8.作为参数传递,class以地址方式传递,struct以值的方式传递

enum.–枚举
由一组成为枚举数列表的命名常数组成的独特类型,每种枚举类型都有基础类型,该类型是可以除char以外的任何整型,枚举元素默认基础的类型为int。默认情况下第一个枚举数值为0,后面枚举数的值一次+1 :

1 enum Days
2 {
3      Monday = 1, Tuesday, Wenesday, Thurday, Friday, Saturday,                 
4      Sunday
5 }

枚举的作用:
1.限制用户不能随意赋值,只能在定义枚举的时候列举的值总选择

2.不需要死记每一值是什么,只需要选择相应的值