
C# record(對於開發者的運行原理)
C# record 是一項強大的功能,引入了不變資料模型的建立,通過減少樣板程式碼來增強編碼體驗。 本教程旨在簡化C#中record的概念,為初學者提供其語法、使用方式和優勢的指導。
無論您是在處理資料傳輸物件、配置,或只是需要一種高效的方式來表示資料,C# records 提供了一種簡潔且對開發者友好的方法。 我們也會在本文後面討論 IronPDF。
什麼是C# Record?
C# 中的 record 是一種提供簡化語法來定義不變資料模型的參考型別。 與傳統的類定義不同,record 強調基於值的相等性,而非參考相等性。 這意味著如果兩個 record 實例的屬性值相同,它們就被視為相等,而不是僅僅因為它們引用了記憶體中的同一個物件位置。
Record種類:類與結構
在C#中有兩種主要的record型別:
- Record class: 預設的record型別,這是一種參考型別。
- Record struct: 為需要值型別的場景引入,這些結構預設是不變的,並提供類似於record類的基於值的比較。
Record宣告
宣告一個record很簡單。 您可以使用record關鍵字,後接型別(class或struct)和record的名稱來定義一個record。 比如,可以宣告一個簡單的人員record如下:
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)此宣告包含 FirstName 和 LastName 的位置參數,這些參數在底層生成公共屬性及其屬性的基本構造函式。
Records的不可變性質
Records旨在設計為不可變的,這意味著一旦建立一個record實例,其屬性值就不可更改。 這種不可變性對於建立可預測且執行緒安全的應用程式至關重要,特別是當涉及到並發操作時。
不可變的 Record Struct
不可變 record struct 宣告與 record class 類似,但使用 record struct 語法。 它結合了record的不可變性和基於值的比較,以及值型別的性能優勢:
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)使用Records
Records簡化了以資料為中心的型別的建立和使用。它們支持繼承,允許非破壞性變更,並提供內建的格式化功能以便於除錯。 讓我們通過實例來探討這些特性。
建立和比較Records
考慮以下範例,我們建立了兩個人員record的實例:
var person1 = new Person("Iron", "Software");
var person2 = new Person("Iron", "Software");
Console.WriteLine(person1 == person2); // Output: TrueDim person1 = New Person("Iron", "Software")
Dim person2 = New Person("Iron", "Software")
Console.WriteLine(person1 = person2) ' Output: True雖然 person1 和 person2 是兩個不同的實例,但根據其屬性值它們被視為相等,展示了基於值的相等性。 這與參考型別的預設行為有顯著差異,後者側重於參考相等性。
不變屬性
從設計上講,record屬性是不可變的。 這意味著您不能在建立record實例後更改其屬性值。
// This will result in a compilation error
// person1.FirstName = "Jane";' This will result in a compilation error
' person1.FirstName = "Jane";Records的繼承
Records支持繼承,允許您建立資料模型的階層結構。 這是您如何擴展基礎record的演示:
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)此 Employee record 擴展了 Person,新增了額外的 Department 屬性。
進階Record特性
非破壞性變更
Records提供了一種內建的方法,從現有的record實例建立新的實例,修改某些屬性,稱為非破壞性變更。
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" }內建格式化
Records具有內建的格式化功能,以便於除錯和日誌記錄,自動提供屬性的字串表示。
Console.WriteLine(person1);Console.WriteLine(person1)使用C# Records的優勢
- **簡化語法:**Records 減少了樣板程式碼的需求,讓您的模型更精簡和易讀。
- **不可變資料模型:**Records 的不可變性質有助於建立執行緒安全的應用程式。
- **基於值的相等性:**Records 使用基於值的相等性而不是參考相等性,這對於以資料為中心的型別是理想的。
- **支持繼承:**Records 可以從其他records繼承,允許程式碼重用和階層資料模型。
IronPDF介紹:C# PDF程式庫

IronPDF 概述 是一個為 .NET 開發者設計的PDF程式庫,旨在在C#應用程式中生成、編輯和操縱PDF文件。 IronPDF 支援從HTML內容、CSS、圖像和JavaScript呈現PDF文件。
其核心能力在於從網頁內容建立PDF文件,提供了一種簡化的方式將HTML字串、URL和ASPX網頁表單轉換為PDF文件。 IronPDF高效地運行於各類應用程式,包括表單應用程式、伺服器應用程式和網頁應用程式。
如何安裝IronPDF程式庫
安裝IronPDF很簡單,可以通過Visual Studio中的NuGet包管理器來完成。 按照以下步驟:
- 在Visual Studio中,導航到解決方案管理器,右鍵點擊引用,選擇管理NuGet包。
- 在NuGet包管理器中,選擇瀏覽並搜索"IronPDF"。
- 找到IronPDF包並點擊安裝。

或者,您可以使用命令行管理器控制台,透過命令進行安裝:
範例:使用C# Record 與 IronPDF
讓我們考慮一個實用的範例,我們使用C# record 來保存資料,然後使用IronPDF生成PDF文件:
public record Person(string FirstName, string LastName);
class Program
{
static void Main(string[] args)
{
// Create an instance of the Person record.
var person = new Person("Iron", "Developer");
// Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
var renderer = new IronPdf.Rendering.ChromePdfRenderer();
// Render an HTML string as a PDF document.
var pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>");
// Save the PDF to the specified location.
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)
' Create an instance of the Person record.
Dim person As New Person("Iron", "Developer")
' Initialize a new renderer object for generating PDF files using Chrome's rendering engine.
Dim renderer = New IronPdf.Rendering.ChromePdfRenderer()
' Render an HTML string as a PDF document.
Dim pdf = renderer.RenderHtmlAsPdf($"<h1>Person Record</h1><p>Name: {person.FirstName} {person.LastName}</p>")
' Save the PDF to the specified location.
pdf.SaveAs("PersonRecord.pdf")
End Sub
End Class此範例建立了一個簡單的 Person record,然後使用 IronPDF 生成展示該人姓名的PDF文件。 這展示了C# records 如何與 .NET 應用程式中的PDF生成無縫整合。

IronPDF 授權
IronPDF 是一種商業產品,提供不同需求的多種授權,包括個人和商業選項。 每次購買都附帶一個終身授權和30天退款保證。 探索 IronPDF 授權選項 在購買授權之前。
結論
C# records 代表著在簡化 .NET 應用程式中的資料建模方面向前邁進了一大步。 通過理解和利用records,開發者可以建立更可靠、易於維護和讀取的程式碼基。
無論您是在開發大型應用程式還是簡單的資料結構,records 所提供的不變性和基於值的相等性等特性,使其成為C#工具箱中不可或缺的工具。
IronPDF 提供了一個機會使用IronPDF 免費試用來測試其功能,在決定購買之前。 如果您發現此軟體符合您的需求,您可以從 $999 開始購買授權。

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。
相關文章


