C# 9.0新特性:只初始化设置器init
154 浏览量
更新于2024-08-28
收藏 81KB PDF 举报
"C# 9.0引入了一个新的特性,即只初始化设置器(init访问器),这使得创建不可变类型变得更加简洁和高效。"
在C#编程语言的发展过程中,保持对象状态不变性是一个重要的设计原则,特别是对于值类型如structs。在C# 9.0之前,创建不可变类型通常需要声明readonly字段并配合只包含get访问器的属性,以确保一旦对象被创建,其状态就不能被修改。例如,定义一个表示二维坐标的Point结构体:
```csharp
struct Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
this.X = x;
this.Y = y;
}
}
```
然而,这种方式需要为每个属性编写额外的构造代码,随着属性数量增加,维护成本也随之提高。为了解决这个问题,C# 9.0引入了init访问器,它允许属性在对象初始化时被设置,但在之后的生命周期中变得不可修改。这样,Point结构体可以改写为:
```csharp
struct Point
{
public int X { get; init; }
public int Y { get; init; }
}
```
使用init访问器后,我们可以通过对象初始化器来创建和初始化Point实例,如下所示:
```csharp
var p = new Point { X = 54, Y = 717 };
```
这种改变不仅减少了代码量,还提高了代码的可读性。此外,它让开发者可以更方便地创建不可变类型,而不必牺牲初始化的灵活性。例如,考虑一个Person类,如果希望在创建实例时设置First Name和Last Name,但之后不允许修改,可以这样定义:
```csharp
public class Person
{
public string? FirstName { get; init; }
public string? LastName { get; init; }
}
```
现在,Person类的实例可以通过对象初始化器创建,但一旦创建完成,FirstName和LastName将不能被修改,增强了类型的安全性和一致性。
C# 9.0的只初始化设置器(init访问器)是一个面向开发者的强大工具,它简化了不可变类型的实现,提高了代码的简洁性和可维护性。这一特性使得在保证对象不变性的同时,还能利用对象初始化的便利性,是C#语言进化的一个重要步骤。
2021-01-19 上传
2009-11-13 上传
2011-02-19 上传
2023-07-28 上传
2023-06-09 上传
2024-10-16 上传
2023-11-28 上传
2023-05-31 上传
2024-08-24 上传
weixin_38734492
- 粉丝: 5
- 资源: 972
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目