.NET 帮助

C# 记录(开发人员如何使用)

发布 2024年四月3日
分享:

C# 记录是一项强大的功能,旨在简化不可变数据模型的创建,并通过减少模板代码来增强编码体验。 本教程旨在为初学者简化 C# 中记录的概念,指导您了解其语法、用法和优势。

无论您是要处理数据传输对象、配置,还是仅仅需要一种高效的数据表示方式,C# 记录都能提供一种简洁且对开发人员友好的方法。 我们还将讨论IronPDF在文章的后面。

什么是 C# 记录?

C# 中的记录是一种引用类型,为定义不可变的数据模型提供了简化的语法。 与传统的类定义不同,记录强调的是基于值的平等而不是引用平等。 这意味着,如果两个记录实例的属性值相同,则视为相等,而不仅仅是因为它们引用了内存中相同的对象位置。

记录类型:类和结构体

C# 中主要有两种记录类型:

  • 记录类:默认记录类型,属于引用类型。
  • 记录结构:为需要值类型的场景而引入,默认情况下不可变,并提供与记录类类似的基于值的比较。

记录声明

声明记录简单明了。 您可以使用 record 关键字定义记录,然后使用类型(类)以及记录名称。 例如,一个简单的人员记录可以声明为

public record class Person(string FirstName, string LastName);
public record class Person(string FirstName, string LastName);
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record class Person(string FirstName, string LastName)
VB   C#

该声明包括 FirstNameLastName 的位置参数,这些参数会生成公共属性和这些属性的主构造函数。

记录的永恒性

记录的设计是不可变的,这意味着一旦创建了记录实例,就不能更改其属性值。 这种不可变性对于创建可预测和线程安全的应用程序至关重要,尤其是在处理并发操作时。

不可变记录结构

不可变记录结构体的声明方式与记录类类似,但使用记录结构体语法。 它将记录的不变性和基于值的比较与值类型的性能优势结合在一起:

public readonly record struct ImmutablePerson(string FirstName, string LastName);
public readonly record struct ImmutablePerson(string FirstName, string LastName);
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public readonly record struct ImmutablePerson(string FirstName, string LastName)
VB   C#

使用记录

记录简化了以数据为中心的类型的创建和使用。它们支持继承,允许非破坏性突变,并提供内置格式以便于调试。 让我们通过示例来探讨这些功能。

创建和比较记录

请看下面的示例,我们创建了一个人记录的两个实例:

var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: True
var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: True
Dim person1 = New Person("Iron", "Software")
Dim person2 = New Person("Iron", "Software")
Console.WriteLine(person1 = person2) ' Output: True
VB   C#

尽管person1person2是两个不同的实例,但根据它们的属性值,它们被认为是平等的,这展示了基于值的平等。 这与引用类型的默认行为大相径庭,默认行为的重点是引用相等。

不可变属性

根据设计,记录属性是不可变的。 这意味着在创建记录实例后,您不能更改其属性值。

// This will result in a compilation error
// person1.FirstName = "Jane";
// This will result in a compilation error
// person1.FirstName = "Jane";
' This will result in a compilation error
' person1.FirstName = "Jane";
VB   C#

记录继承

记录支持继承,允许您创建数据模型的层次结构。 以下是扩展基本记录的方法:

public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);
public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName)
VB   C#

员工记录扩展了个人,增加了部门属性。

高级记录功能

非破坏性突变

记录提供了一种内置方法,用于从修改了某些属性的现有记录实例创建新的记录实例,即所谓的非破坏性突变。

var updatedPerson = person1 with { FirstName = "Jane" };
var updatedPerson = person1 with { FirstName = "Jane" };
'INSTANT VB TODO TASK: C# 'with expressions' are not converted by Instant VB:
'var updatedPerson = person1 with { FirstName = "Jane" }
VB   C#

内置格式

记录带有内置格式,便于调试和记录,可自动提供其属性的字符串表示。

Console.WriteLine(person1);
Console.WriteLine(person1);
Console.WriteLine(person1)
VB   C#

使用 C# 记录的优势

  • 简化语法:记录减少了对模板代码的需求,使您的模型更加简洁易读。
  • 不可变数据模型:记录的不可变性有助于创建线程安全的应用程序。
  • 基于值的等价:记录使用基于值的平等而不是引用平等,非常适合以数据为中心的类型。
  • 支持继承:记录可以从其他记录继承,从而实现代码重用和分层数据模型。

IronPDF 简介:C# PDF 库

C# 记录(如何为开发人员工作):图 1

IronPDF 概述C# PDF 是专为 .NET 开发人员设计的 PDF 库,用于在 C# 应用程序中生成、编辑和处理 PDF 文档。 IronPDF 支持渲染从 HTML 内容生成 PDF译文必须包含 CSS、图像和 JavaScript。

它的核心功能在于从网页内容创建 PDF 文档,提供一种将 HTML 字符串、URL 和 ASPX 网页表单转换为 PDF 文件的简化方法。 IronPdf 可在各种应用程序类型中高效运行,包括表单应用程序、服务器应用程序和网络应用程序。

如何安装 IronPDF 库

IronPdf 的安装非常简单,可通过 Visual Studio 中的 NuGet 软件包管理器完成。 遵循以下步骤:

  1. 在 Visual Studio 中,导航到 "解决方案资源管理器",右键单击 "引用",然后选择 "管理 NuGet 包"。

  2. 在 NuGet 包管理器中,选择 "浏览 "并搜索 "IronPdf"。

  3. 找到 IronPDF 软件包并点击安装。

    C# 记录(如何为开发人员工作):图 2

    您也可以使用软件包管理器控制台,使用以下命令安装该工具:

Install-Package IronPdf

示例:使用 IronPDF 的 C# 记录

让我们来看一个实际例子,我们使用 C# 记录来保存数据,然后用 IronPDF 生成 PDF 文档:

public record Person(string FirstName, string LastName);
class Program
{
    static void Main(string [] args)
    {
        var person = new Person("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
public record Person(string FirstName, string LastName);
class Program
{
    static void Main(string [] args)
    {
        var person = new Person("Iron", "Developer");
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
        pdf.SaveAs("PersonRecord.pdf");
    }
}
'INSTANT VB TODO TASK: C# 'records' are not converted by Instant VB:
'public record Person(string FirstName, string LastName)
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim person As New Person("Iron", "Developer")
		Dim renderer = New ChromePdfRenderer()
		Dim pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>")
		pdf.SaveAs("PersonRecord.pdf")
	End Sub
End Class
VB   C#

本例创建了一个简单的记录,然后使用 IronPDF 生成一个显示该人姓名的 PDF 文档。 它展示了 C# 记录如何与 .NET 应用程序中的 PDF 生成无缝集成。

C# 记录(如何为开发人员工作):图 3

IronPDF 许可

C# 记录(如何为开发人员工作):图 4

IronPdf 是一款商业产品,可根据不同需求提供各种许可证,包括个人许可证和商业许可证。 每次购买均附带终身许可和 30 天退款保证。 探索 IronPDF 许可选项在购买许可证之前。

结论

C# 记录是简化 .NET 应用程序中数据建模的重要一步。 通过了解和利用记录,开发人员可以创建更可靠、可维护和可读的代码库。

无论您是在开发大型应用程序还是简单的数据结构,记录所提供的功能(从不变性到基于值的相等性)都使它们成为您 C# 工具包中不可或缺的工具。

IronPDF 提供了一个使用以下工具测试其功能的机会IronPDF 免费试用版在决定购买之前。 如果您发现该软件符合您的需求,您可以购买起价为 $749 的许可证。

< 前一页
C# Using 语句(它是如何为开发人员工作的)
下一步 >
C# 操作(开发人员如何使用)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >