好看欧美视频网站模板下载 迅雷下载 迅雷下载地址,室内设计效果图说明,解决网站兼容性问题,广西住房和城乡建设厅培训中心网站首页文章目录 11.1 什么是结构11.2 结构是值类型11.3 对结构赋值11.4 构造函数和析构函数11.4.1 实例构造函数11.4.2 静态构造函数11.4.3 构造函数和析构函数小结 11.5 属性和字段初始化语句11.6 结构是密封的11.7 装箱和拆箱#xff08;*#xff09;11.8 结构作为返回值和参数11… 文章目录 11.1 什么是结构11.2 结构是值类型11.3 对结构赋值11.4 构造函数和析构函数11.4.1 实例构造函数11.4.2 静态构造函数11.4.3 构造函数和析构函数小结 11.5 属性和字段初始化语句11.6 结构是密封的11.7 装箱和拆箱*11.8 结构作为返回值和参数11.9 关于结构的更多内容 11.1 什么是结构
类是引用类型结构是值类型。结构是 隐式密封 的不能派生。
11.2 结构是值类型
结构类型的变量不能为 null。两个结构变量不能引用同一对象。 图11.1 类与结构的内存安排 11.3 对结构赋值
对结构赋值就是复制结构的值。 图11.2 类和结构的变量赋值 11.4 构造函数和析构函数
结构可以有实例构造函数和静态构造函数但没有析构函数。
11.4.1 实例构造函数
每个结构都存在预定义的无参构造函数。在 C# 10 之前不能删除或重定义。在 C# 11 之前结构类型的构造函数必须初始化该类型的所有实例字段。可以创建其他的有参构造函数。仍需要使用 new 调用构造函数。可以不使用 new 创建结构实例但是有如下限制 在设置数据成员的值后才能使用该成员。对所有数据成员赋值后才能调用函数成员。 图11.3 不使用 new 创建结构实例的限制 11.4.2 静态构造函数
结构的静态构造函数与类的静态构造函数类似。
11.4.3 构造函数和析构函数小结 表11.1 构造函数和析构函数的总结 11.5 属性和字段初始化语句
在 C# 10 之前不允许使用实例属性和字段初始化语句。静态属性和静态字段可以进行初始化。 图11.4 C# 10 之前不允许使用实例属性和字段初始化语句 11.6 结构是密封的
由于结构不支持继承因此下面的修饰符不能用于结构
protectedprotected internalabstractsealedvirtual
由于结构本身派生自 System.ValueTypeSystem.ValueType 派生自 object因此可以使用 new 和 override 去覆盖或重定向 System.ValueType 中同名的成员。
11.7 装箱和拆箱*
11.8 结构作为返回值和参数
将结构作为返回值或值参数时均会创建副本。使用 ref 或 out 参数时将会传递结构的引用以修改其内容。
11.9 关于结构的更多内容
对结构进行分配的开销比类小可以提高性能。 注意装箱和拆箱的高昂代价。 预定义简单类型尽管被视为原始类型但在 .NET 中实现为结构。 int、short、long 等 类似分部类可以声明分部结构。