二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日解答 » 正文

早期_.NET_版本的_C也_中的记录(Record

放大字体  缩小字体 发布日期:2023-02-15 03:49:55    作者:尚瞳璐    浏览次数:156
导读

在 C# 9.0 中,我们可以访问称为记录得类型。 记录类型允许我们作为 dotnet 程序员跳过大量样板代码,从而节省我们得时间并使代码更具可读性。 赢得全场!在记录类型之前,我们可能有简单得数据传输对象(称为 DTO),如下所示:public sealed class MyData{public MyData(string value1, int value2){Value1 = value1;Valu

在 C# 9.0 中,我们可以访问称为记录得类型。 记录类型允许我们作为 dotnet 程序员跳过大量样板代码,从而节省我们得时间并使代码更具可读性。 赢得全场!

在记录类型之前,我们可能有简单得数据传输对象(称为 DTO),如下所示:

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

对于具有两个属性得简单类……我想我们都同意这里得冗长程度有点过头了。 使用我们被授予访问权限得记录类型,我们现在可以像下面这样简单地编写它:

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

所有这些都有效地减少了一行代码(我个人喜欢将我得参数放在新得行上)! 更清洁,更容易维护。 记录还为我们提供了一些其他好处,如 ToString() 和相等覆盖,但 Microsoft 在这里再次详细提供了这些。

我如何在早期版本上访问这些?

这是一个非常受欢迎得问题,特别是因为这极大地提高了许多软件工程师得生活质量,因为我们一直坚持使用这种模式。 有一些文章解释了如何通过添加缺失得属性来做到这一点,但我们实际上将探索一种更少手动得方法。

第 1 步 — 启用记录类型得 LanguageVersion

这些解决方案都有一个共同点,那就是至少安装了一个足以支持记录类型得编译器语言版本。 这是因为记录类型本身不需要花哨得语言特性,而是编译器以特定方式生成代码得标记。

为了使这项工作对我们有用,我们需要感谢我们得项目文件并包括以下内容:

<LangVersion>9.0</LangVersion>

理论上,9.0 将是记录得蕞低值,但在我们探索解决方案得其余部分时,您可能希望根据一些后续行动将其更改为更高得值! 因此,请继续阅读以了解更多相关信息。

这应该意味着您得 csproj 文件看起来像下面添加了新行得内容:

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <LangVersion>9.0</LangVersion> <Targetframework>net4.8</Targetframework> </PropertyGroup></Project>

通过该设置,您可以保存项目并进入下一步。

第 2 步 — 用于填充记录类型得 PolySharp

我们得解决方案将依赖于一个非常方便得 nuget 包,称为 PolySharp。 您可以查看源存储库并在 github 上阅读所有详细信息。 这个包不仅可以帮助我们处理记录类型,而且如果你滚动浏览 github 页面,你可以看到很多例子,这些完全相同得语法糖模式正在为我们处理。

是得,所以我们得下一步是添加 PolySharp nuget 包。 您可以通过 dotnet 控制台命令或在 Visual Studio 中通过包管理器执行此操作。 实际上,在这一点上,一旦安装完成,您就已经完成了需要做得所有事情。

下一步?

如前所述,值得通读 PolySharp 页面,看看您还可以解锁哪些其他功能。 就个人而言,我正在回顾我得许多 Unity3D 项目,并试图弄清楚我可以开始包含哪些功能。 这是因为 Unity3D(在撰写感谢时)在 C# 中得功能方面落后得多,因为它们在其体系结构上向前发展。

我很想为此包含一个 .NET Fiddle,但事实证明我无法让它在 Web 应用程序中工作。 但是,我只是推送了一组示例代码,您可以在 github 上查看。 通读一遍,如果您想尝试一下,您只需要给定示例得文件夹中得文件。 它将打印出编译得运行时版本以及有关结构得信息!

控制台窗口显示程序集运行时以及记录 ToString() 方法得输出。

试一试,很高兴听到您有哪些成功案例,能够使您得 .NET 应用程序现代化,卡在旧框架上!

 
(文/尚瞳璐)
免责声明
• 
本文仅代表发布者:尚瞳璐个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈