.NET幫助 C# 記錄(對於開發者的運行原理) Curtis Chau 更新日期:6月 22, 2025 Download IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article C# record 是一個強大的功能,旨在簡化不可變數據模型的創建,並通過減少樣板代碼來增強編碼體驗。 本教程旨在簡化 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) $vbLabelText $csharpLabel 此聲明包括 FirstName 和 LastName 的位置參數,這些在底層生成公共屬性和主構造函數。 記錄的不可變性 記錄設計為不可變,意味著一旦創建記錄實例,其屬性值就無法更改。 這種不可變性對於創建可預測且線程安全的應用程序至關重要,尤其是在處理並發操作時。 不可變記錄結構 不可變記錄結構的聲明類似於記錄類,但使用 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) $vbLabelText $csharpLabel 使用記錄 記錄簡化了面向數據類型的創建和使用。它們支持繼承,允許非破壞性變更,並提供內置格式以便於除錯。 讓我們通過示例探索這些功能。 創建和比較記錄 考慮以下示例,我們創建了兩個人員記錄實例: 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 $vbLabelText $csharpLabel 儘管 person1 和 person2 是兩個不同的實例,但根據其屬性值它們被認為是相等的,展示了基於值的相等性。 這顯著與引用類型的默認行為不同,後者專注於引用相等性。 不可變屬性 根據設計,記錄屬性是不可變的。 這意味著在創建記錄實例後,無法更改其屬性值。 // 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"; $vbLabelText $csharpLabel 記錄繼承 記錄支持繼承,允許您創建數據模型層次結構。 以下是擴展基礎記錄的方法: 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) $vbLabelText $csharpLabel 此 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" } $vbLabelText $csharpLabel 內置格式 記錄具有內置格式以便於調試和日誌記錄,能夠自動提供其屬性的字符串表示。 Console.WriteLine(person1); Console.WriteLine(person1); Console.WriteLine(person1) $vbLabelText $csharpLabel 使用 C# 記錄的優勢 簡化的語法:記錄減少了樣板代碼的需求,使您的模型更簡潔和可讀。 不可變的數據模型:記錄的不可變性有助於創建線程安全的應用程序。 基於值的相等性:記錄使用基於值的相等性,而不是引用相等性,非常適合面向數據的類型。 支持繼承:記錄可以從其他記錄繼承,允許代碼重用和層次結構數據模型。 IronPDF 介紹:一個 C# PDF 庫 IronPDF 概覽 是一個為 .NET 開發人員設計的 PDF 庫,用於生成、編輯和操作 C# 應用程序中的 PDF 文件。 IronPDF 支持從 HTML 內容、CSS、圖像和 JavaScript 渲染 PDFs。 其核心能力在於從 Web 內容創建 PDF 文件,提供了一種流線型的方法將 HTML 字符串、URL 和 ASPX Web 表單轉換為 PDF 文件。 IronPDF 在各種應用程序類型(包括表單應用程序、服務器應用程序和 Web 應用程序)中運行高效。 如何安裝 IronPDF 庫 安裝 IronPDF 很簡單,可以通過 Visual Studio 中的 NuGet 包管理器實現。 按照以下步驟進行: 在 Visual Studio 中,導航至解決方案資源管理器,右鍵單擊引用,然後選擇管理 NuGet 包。 在 NuGet 包管理器中,選擇瀏覽,然後搜索"IronPdf"。 找到 IronPDF 包並點擊安裝。 或者,您可以使用包管理器控制台使用以下命令安裝它: Install-Package IronPdf 示例:將 C# 記錄與 IronPDF 結合使用 讓我們考慮一個實際示例,我們使用 C# 記錄來持有數據,然後使用 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"); } } 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 $vbLabelText $csharpLabel 此示例創建了一個簡單的 Person 記錄,然後使用 IronPDF 生成一個顯示該人員姓名的 PDF 文件。 它展示了如何無縫地將 C# 記錄與 PDF 生成集成在 .NET 應用程序中。 IronPDF授權 IronPDF 是一款商業產品,提供適合不同需求的多種許可證,包括個人和商業選項。 每次購買均附帶終身許可證和 30 天退款保證。 在購買許可證之前,請先瀏覽 IronPDF 許可證選項。 結論 C# 記錄在簡化 .NET 應用程序中的數據建模方面邁出了重要一步。 通過理解和利用記錄,開發人員可以創建更可靠、可維護和可讀的代碼庫。 無論您是開發大規模應用程序還是簡單的數據結構,記錄所提供的功能,從不可變性到基於值的相等性,使其成為您 C# 工具包中不可或缺的工具。 IronPDF 提供了一個機會,通過 IronPDF 免費試用版 測試其功能,然後決定是否購買。 如果發現軟件滿足您的需求,您可以從 $799 開始購買許可證。 常見問題解答 如何在 C# 中使用 record 生成 PDF? C# record 可用於高效存儲數據,然後可利用 IronPDF 將這些數據生成為 PDF 文件。您可以創建一個 record 來保存所需數據,並使用 IronPDF 將此數據渲染成 PDF 格式。 使用 C# record 有什麼好處? C# record 提供多種好處,包括簡化的語法、不可變的數據模型、基於值的相等性以及繼承支持。這些特性使 record 適合創建簡潔且可靠的數據集中類型。 record 如何在 C# 中處理相等性? C# 中的 record 強調基於值的相等性。這意味著如果兩個 record 實例的屬性值匹配,則認為它們是相等的,與其內存中的位置無關。 如何在 C# 中聲明一個 record? 在 C# 中聲明一個 record 使用 record 關鍵字,後跟類型(類或結構)和 record 的名稱。例如:public record class Person(string FirstName, string LastName);。 record 類和 record 結構有什麼區別? record 類是引用類型,而 record 結構是值類型。兩者均提供不可變性和基於值的比較,但它們在內存分配和使用場景上有所不同。 創建後可以修改 C# record 的屬性嗎? C# record 設計為不可變,這意味著屬性在 record 創建後不能更改。但是,您可以進行非破壞性的更改來創建具有修改過屬性的新 record 實例。 IronPDF 如何增強 C# 應用程式? IronPDF 提供強大的功能來生成、編輯和操作 PDF 文件,從而增強 C# 應用程式。它允許開發人員從 HTML 內容創建 PDF,是管理文件的多功能工具。 如何在 .NET 專案中安裝 IronPDF? 您可以使用 Visual Studio 的 NuGet 套件管理器或在套件管理器控制台中運行命令 Install-Package IronPdf 在 .NET 項目中安裝 IronPDF。 在 C# record 中,非破壞性更改是如何運作的? C# record 中的非破壞性更改允許您從現有 record 實例創建一個具有某些修改屬性的新實例,且不改變原始實例。 在 C# 開發中,PDF 庫有什麼用途? 在 C# 開發中,像 IronPDF 這樣的 PDF 庫用於生成、編輯和操作 PDF 文件。它幫助開發人員高效地將 PDF 功能集成到他們的應用程序中。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 更新日期 9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新日期 9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 更新日期 8月 5, 2025 C#開關模式匹配(對開發者來說是如何工作的) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 C# Using 語句(對於開發者的運行原理)C# Action(對於開發者的運...