一.类型不同
struct是值类型,存储在栈上,当进行赋值时,会进行值拷贝,即创造一个新副本,适用于轻量级的数据结构,如点,矩形,日期等。
class是引用类型,存储在堆上,当进行赋值时,只是复制引用而不是对象本身,适用于复杂的数据结构,如用户,订单等。
二.默认构造函数
struct:
1.不能显示定义无参数的构造函数,因为编译器会自动提供一个默认构造函数,把所有字段初始化为默认值(如int初始化为0,string初始化为null)
即不能 public struct point
{
public point()
{
}
//不能这样显示定义无参数的构造函数,编译器会自动提供默认构造函数
}
2.可以定义带参数的构造函数
class:
1.可以显式定义无参数的默认构造函数
2.如果没有定义任何构造函数,编译器会提供一个默认构造函数,将所有字段初始化为默认值
三:继承
struct:不能继承和被继承,但是可以实现接口
class:可以继承和被继承(不能多继承,只能单继承)
四:性能
struct:值类型,存储在栈上,分配和回收内存速度较快
但如果结构体过大,频繁值拷贝,会影响性能开销
class:引用类型,存储在堆上,分配和回收速度较慢(需要垃圾回收机制)
引用类型的复制只是引用本身,不会再复制出来一个,所以传递和赋值对性能开销较小