.NET 程序中的记录类型:简化代码与提高可读性

.NET开发中,记录类型(Record Types)为开发者带来了一种新的数据结构,它允许以更简洁、更易读的方式定义数据。在C#中,记录类型是在.NET 9.0版本中引入的,它提供了一种声明式的方式来定义数据,并且自动提供了诸如ToString()和相等性检查等成员方法。

在记录类型出现之前,可能会使用数据传输对象(DTOs),它们通常看起来非常冗长。例如,一个简单的DTO可能如下所示:

public sealed class MyData { public MyData(string value1, int value2) { Value1 = value1; Value2 = value2; } public string Value1 { get; } public int Value2 { get; } }

如上代码所示,即使是定义一个包含两个属性的简单类,代码的冗长程度也是显而易见的。而使用记录类型,可以将其简化为一行代码:

public sealed record MyData(string Value1, int Value2);

这种简化不仅使代码更加清晰,也更易于维护。此外,记录类型还为提供了一些额外的好处,比如自动生成的ToString()方法和相等性重写等。

如何在早期版本中使用记录类型

这是一个非常受欢迎的问题,尤其是因为这种改进极大地提高了许多软件工程师的生活质量。虽然记录类型本身不需要复杂的语言特性,但它需要编译器以特定的方式生成代码。

要使记录类型在早期版本中工作,需要确保至少安装了支持记录类型的编译器语言版本。以下是如何设置的步骤:

要启用记录类型,需要在项目文件中包含以下设置:

9.0

理论上,9.0是记录类型的最低版本要求,但随着探索解决方案的其余部分,可能希望根据后续情况将其更改为更高的值。以下是包含新行的csproj文件示例:

9.0 net4.8

设置完成后,可以保存项目并继续下一步。

解决方案将依赖于一个非常有用的NuGet包,名为PolySharp。可以通过.NET控制台命令或Visual Studio中的包管理器来添加它。安装完成后,就已经完成了所有必要的步骤。

值得一读的是PolySharp页面,看看可能能够解锁的其他功能。个人正在回顾许多Unity3D项目,并尝试找出可以开始包含哪些功能。这是因为Unity3D(在撰写本文时)在C#功能方面落后于他们的架构发展。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485