.NET 幫助

C# 記錄(它如何對開發人員起作用)

發佈 2024年4月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 的位置參數,這些參數在底層生成公共屬性及其主要構造函數。

資料紀錄的不變性

資料紀錄被設計為不可變的,這意味著一旦創建了資料紀錄實例,其屬性值就不能更改。這種不變性對於創建可預測和線程安全的應用程式至關重要,尤其是在處理並發操作時。

不可变記錄結構

不可变記錄結構的宣告方式類似於記錄類,但使用record struct語法。它結合了記錄的不可變性和基於值的比較,以及值類型的性能優勢:

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#

Employee記錄擴展了Person,並增加了額外的Department屬性。

進階記錄功能

非破壞性變異

記錄提供了一種內建的方法,可以從現有的記錄實例中創建一個新的實例,同時修改了一些屬性,這稱為非破壞性變異。

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# Records 的優勢

  • 簡化語法: Records 減少了樣板代碼的需求,使您的模型更簡潔易讀。
  • 不可變數據模型: Records 的不可變性質有助於創建線程安全的應用。
  • 基於值的相等性: Records 使用基於值的相等性,而不是參考相等性,非常適合數據中心型類型。
  • 支持繼承: Records 可以從其他 records 繼承,允許代碼重用和分層數據模型。

關於 IronPDF 的介紹:C# PDF 庫

C# 記錄(這是如何為開發人員工作的):圖 1

IronPDF 是一個為 .NET 開發人員設計的 PDF 庫,用於在 C# 應用程式中生成、編輯和操作 PDF 文件。IronPDF 支援渲染 從 HTML 生成 PDF, CSS, 圖像和 JavaScript。

其核心功能在於從網頁內容創建 PDF 文件,提供一種將 HTML 字符串、URL 和 ASPX 網頁表單轉換為 PDF 文件的簡化方法。IronPDF 在各種應用程序類型中高效運行,包括表單應用程序、服務器應用程序和 Web 應用程序​​。

如何安裝 IronPDF 函式庫

安裝 IronPDF 很簡單,可以通過 Visual Studio 的 NuGet 套件管理器完成。請按照以下步驟操作:

  1. 在 Visual Studio 中,導航到解決方案資源管理器,右鍵點擊「參考」,選擇「管理 NuGet 套件」。

  2. 在 NuGet 套件管理器中,選擇「瀏覽」,然後搜索「IronPdf」。

  3. 找到 IronPDF 套件並點擊「安裝」。

C# 記錄(開發人員如何使用):圖 2

另外,您可以使用程序包管理控制台並輸入以下命令來安裝它:

Install-Package IronPdf

範例: 使用 C# Record 與 IronPDF

讓我們考慮一個實際範例,在這裡我們使用 C# record 來存儲數據,然後使用 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#

這個例子創建了一個簡單的Person記錄,然後使用IronPDF生成一個顯示該人姓名的PDF文件。它展示了C#記錄如何無縫地與.NET應用程式中的PDF生成集成。

C# 記錄 (對開發人員的運作方式):圖 3

IronPDF Licensing

IronPDF 授權

C# 記錄(開發人員的工作原理):圖 4

IronPDF 是一款商業產品,提供符合不同需求的各種許可證,包括個人和商業選項。每次購買都附帶永久許可證和 30 天退款保證。 許可證 在購買許可證之前。

結論

C# 紀錄代表了簡化 .NET 應用程式中數據模型的一個重要進展。透過了解和利用紀錄,開發人員可以建立更可靠、可維護和可讀的代碼基礎。

無論您是在開發大型應用程式還是簡單的數據結構,紀錄所提供的特性,從不可變性到基於數值的相等性,使其成為您 C# 工具箱中不可或缺的工具。

IronPDF 提供了一個機會來測試其功能,使用 免費試用 在決定購買之前。如果您發現該軟件符合您的需求,您可以購買從 $749 開始的授權。

< 上一頁
C# 使用語句(為開發人員工作的方式)
下一個 >
C#操作(開發者如何運作)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >