15-类和结构的关系
9.4.2 类和结构的关系
类和结构实际上都是创建对象的模板,都可以包含构造函数、常数、字段、方法、属性、索引器和运算符等成员。二者的主要区别如下。
(1)结构是值类型,类是引用类型,在内存中结构是存储在堆栈上的值类型,类是存储在堆(heap)上的引用类型。
(2)结构的构造函数和类的构造函数不同,结构不能包含显式的无参数构造函数,结构成员会自动初始化为它们的默认值。结构不能包含以下形式的初始值设定类:base(参数列表)。
(3)对于结构中的实例字段成员,不能在声明时赋值初始化。
(4)声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new关键字。如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
(5)结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。