□类是引用类型而结构是值类型
□结构是隐式密封的,这意味着它们不能被派生
2.结构是值类型
□结构类型的变量不能为null
□两个结构变量不能引用同一个对象
e.g.下图展示了该代码中的两个变量如何被安排在内存中
3.对结构赋值
把一个结构赋值给另一个结构,就将一个结构的值复制给另一个结构。这和复制类变量不同,复制类变量时只复制引用。
4.构造函数和析构函数
结构可以有实例构造函数和静态构造函数,但不允许有析构函数。
4.1 实例构造函数
语言隐式地为每个结构提供一个无参数的构造函数。这个构造函数把结构的每个成员设置为该类型的默认值。值成员设置成它们的默认值,引用成员设置成null。
预定义的无参数构造函数对每个结构都存在,而且不能删除或重定义。但是,可以创建另外的构造函数,只要它们有参数。注意,这和类不同。对于类,编译器只在没有其他构造函数声明时提供隐式的无参数构造函数。
调用一个构造函数,包括隐式无参数构造函数,要使用new运算符。注意,即使不从堆中分配内存也要使用new运算符。
也可以不使用new运算符构建结构的实例。然而,如果这样做,有一些限制:
□在显示设置数据成员之后,才能使用它们的值
□在对所有数据成员赋值之后,才能调用任何函数成员
如下例所示:
4.2 静态构造函数
与类相似,结构的静态构造函数创建并初始化静态数据成员,而且不能引用实例成员。结构的静态构造函数遵从与类的静态构造函数一样的规则。
THE END