跳至頁尾內容
.NET 幫助

C# 記錄(開發者如何理解其工作原理)

C# 記錄是一個強大的功能,旨在簡化不可變資料模型的創建,並透過減少樣板程式碼來增強編碼體驗。 本教程旨在為初學者簡化 C# 中記錄的概念,指導您了解其文法、用法和優勢。

無論您是在處理資料傳輸物件、配置,還是僅僅需要一種高效的方式來表示數據,C# 記錄都提供了一種簡潔且對開發人員友好的方法。 我們將在本文後面討論IronPDF

什麼是 C# Record?

C# 中的記錄是一種引用類型,它提供了一種簡化的語法來定義不可變資料模型。 與傳統的類別定義不同,記錄強調基於值的相等性,而不是引用相等性。 這意味著,如果兩個記錄實例的屬性值相同,則認為它們是相等的,而不僅僅是因為它們引用了記憶體中的相同物件位置。

記錄類型:類別和結構體

C# 中有兩種主要類型的記錄:

-記錄類別:預設記錄類型,即引用類型。 -記錄結構體:為需要值類型的場景而引入,預設是不可變的,並提供類似於記錄類別的基於值的比較。

記錄聲明

申報紀錄很簡單。 您可以使用record關鍵字,後跟類型(類別或結構)和記錄名稱來定義記錄。 例如,一個簡單的人員記錄可以聲明為:

public record class Person(string FirstName, string LastName);
public record class Person(string FirstName, string LastName);
$vbLabelText   $csharpLabel

此聲明包含FirstNameLastName的位置參數,這些參數會在底層產生公共屬性以及這些屬性的主建構子。

記錄的不可更改性

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

不可變記錄結構

不可變記錄結構體的聲明方式與記錄類別類似,但使用記錄結構體的語法。 它結合了記錄的不可變性和基於值的比較特性,以及值類型的性能優勢:

public readonly record struct ImmutablePerson(string FirstName, string LastName);
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
$vbLabelText   $csharpLabel

儘管person1person2是兩個不同的個體,但根據他們的財產價值,他們被認為是平等的,這體現了基於價值的平等。 這與引用類型的預設行為(側重於引用相等性)有很大不同。

不變屬性

根據設計,記錄屬性是不可變的。 這表示在建立記錄實例後,您無法變更其屬性值。

// 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);
$vbLabelText   $csharpLabel

員工記錄繼承自 Person記錄,並新增了Department屬性。

進階記錄功能

非破壞性突變

記錄提供了一種內建方法,可以從現有記錄實例建立新記錄實例,並修改其中的一些屬性,稱為非破壞性修改。

var updatedPerson = person1 with { FirstName = "Jane" };
var updatedPerson = person1 with { FirstName = "Jane" };
$vbLabelText   $csharpLabel

內建格式化

記錄帶有內建格式,便於調試和日誌記錄,自動提供其屬性的字串表示形式。

Console.WriteLine(person1);
Console.WriteLine(person1);
$vbLabelText   $csharpLabel

使用 C# 記錄的優勢

-簡化語法:記錄減少了樣板程式碼的需求,使您的模型更簡潔易讀。 -不可變資料模型:記錄的不可變性有助於建立線程安全的應用程式。 -基於值的相等性:記錄使用基於值的相等性而不是引用相等性,非常適合以資料為中心的類型。 -支援繼承:記錄可以從其他記錄繼承,從而實現程式碼重複使用和分層資料模型。

IronPDF簡介:AC# PDF庫

C# 記錄(開發者如何理解其工作原理):圖 1

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

它的核心功能在於從網頁內容建立 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

範例:在 IronPDF 中使用 C# Record

讓我們來看一個實際的例子,其中我們使用 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");
    }
}
$vbLabelText   $csharpLabel

本範例建立一個簡單的人員記錄,然後使用 IronPDF 產生一個顯示該人員姓名的 PDF 文件。 它展示了 C# 記錄如何與 .NET 應用程式中的 PDF 生成無縫整合。

C# 記錄(開發者如何理解):圖 3

IronPDF 許可

C# 記錄(開發者如何操作):圖 4

IronPDF 是一款商業產品,提供各種滿足不同需求的許可證,包括個人版和商業版。 每次購買均附帶終身授權和 30 天退款保證。 購買許可證前,請先了解 IronPDF 的許可選項

結論

C# 記錄代表著在簡化 .NET 應用程式資料建模方面邁出的重要一步。 透過理解和利用記錄,開發人員可以創建更可靠、更易於維護和更易讀的程式碼庫。

無論您是在開發大型應用程式還是簡單的資料結構,記錄提供的特性(從不可變性到基於值的相等性)都使其成為您 C# 工具包中不可或缺的工具。

IronPDF 提供免費試用版,讓使用者在決定購買前體驗其各項功能。 如果您發現軟體符合您的需求,您可以購買許可證,起價為$799 。

常見問題解答

如何使用 C# 中的記錄產生 PDF?

C# 記錄可用於高效儲存數據,IronPDF 可以利用這些數據產生 PDF 文件。您可以建立一個記錄來保存必要的數據,然後使用 IronPDF 將這些數據渲染成 PDF 格式。

使用 C# 記錄有哪些好處?

C# 記錄類型具有諸多優勢,包括簡化的語法、不可變的資料模型、基於值的相等性以及對繼承的支援。這些特性使得記錄類型非常適合建立簡潔可靠的資料中心類型。

C# 中記錄如何處理相等性?

C# 中的記錄強調基於值的相等性。這意味著,如果兩個記錄實例的屬性值匹配,則無論它們在記憶體中的位置如何,這兩個記錄實例都被認為是相等的。

如何在C#中宣告一筆記錄?

在 C# 中,記錄的聲明使用record關鍵字,後面跟著類型(類別或結構)和記錄名稱。例如: public record class Person(string FirstName, string LastName);

記錄類別和記錄結構有什麼差別?

記錄類別是引用類型,而記錄結構是值類型。兩者都提供不可變性和基於值的比較,但在記憶體分配和使用場景方面有所不同。

建立 C# 記錄後可以修改其屬性嗎?

C# 記錄被設計為不可變的,這表示記錄建立後其屬性無法變更。但是,您可以執行非破壞性修改,以建立具有已修改屬性的新記錄實例。

IronPDF 如何增強 C# 應用程式的功能?

IronPDF 透過提供強大的 PDF 文件產生、編輯和操作功能,增強了 C# 應用程式的效能。它允許開發人員從 HTML 內容建立 PDF,使其成為一款用途廣泛的文件管理工具。

如何在.NET專案中安裝IronPDF?

您可以使用 Visual Studio 中的 NuGet 套件管理器在 .NET 專案中安裝 IronPDF,或在套件管理器控制台中執行命令Install-Package IronPdf

C# 記錄中的非破壞性修改是如何運作的?

C# 記錄中的非破壞性修改可讓您從現有記錄實例建立新的記錄實例,並修改其中的某些屬性,而不會變更原始實例。

C# 開發中 PDF 函式庫的用途是什麼?

在 C# 開發中,可以使用 IronPDF 等 PDF 庫來產生、編輯和操作 PDF 文件。它可以幫助開發人員有效地將 PDF 功能整合到他們的應用程式中。

Jacob Mellor,Team Iron 首席技術官
首席技術長

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。