【区别】
- 类是引用类型,结构体是值类型
- 类中的字段在声明时可以赋值,结构体中在声明字段时不能赋值
- 类中的构造器可以初始化部分字段,结构体中的构造器在必须初始化所有字段
- 类支持终结器,结构体不支持(结构体是值类型 ,以值的形式复制,难以知道在什么时候能安全执行终结器并释放结构体占用的非托管资源,垃圾回收器可以知道什么时候一个引用类型实例的引用不再活动,可在此之后的任何时间为这个引用类型运行终结器)
- 类可以自定义无参数构造器,结构体不可以
- 类必须用new实例化,结构体可以不用
- 类可以继承另一个类,也可以被另一个类继承,结构体不可以(值类型不能继承,引用类型可以)
【相同】
- 都可包含字段、属性、构造器和方法
- 都可以实现接口
【使用】
若对象只有一些简单的数据,使用结构体;若对象包含的数据很多,还有一些操作,则使用类。例如,对猫这个对象,如果只用到颜色和体重,用结构体;如果用到颜色、体重、长度、速度、灵活度等,还要控制猫的颜色根据xx条件改变、速度在xx条件要重新计算等,用类。
【参考】
《C#本质论5.0》