11.1 什么是结构
结构和类的区别:
- 类是引用类型,结构是类型;
- 结构是隐式密封的,不能派生。
11.2 结构是值类型
结构类型的变量不能为null
。
11.3 对结构赋值
略
11.4 构造函数和析构函数
结构可以有实力构造函数和静态构造函数,但是不允许有析构函数。
11.4.1 实例构造函数
和类不同,结构永远存在预定义的无参数构造函数。
可以不用new
运算符创建结构的实例,但是必须先对所有数据成员赋值后再访问。
11.5 属性和字段初始化语句
不允许在声明时对实例属性和字段初始化,但是可以对静态属性和静态字段初始化。
11.6 结构是密封的
所以一些和继承相关的修饰符不能在结构成员声明时使用。
new
和override
除外:
因为所有结构都派生自System.ValueType
,而System.ValueType
派生自object
,所以当创建和System.ValueType
同名的成员时可以使用new
或者override
。
11.9 关于结构的更多内容
- 预定义简单类型(
int
,short
等等)实际上在 .NET 中都实现为结构; - 使用结构代替类有时可以提高性能,但要注意装箱和开箱的高昂代价。