.NET 幫助

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

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

無論您是處理數據傳輸對象、配置,還是僅僅需要一種高效的方法來表示數據,C# 記錄都提供了一種簡潔且對開發者友好的方法。 我們稍後也會在文章中討論IronPDF

什麼是 C# 記錄?

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

記錄類型:類別和結構體

在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

此聲明包括 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)
$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

儘管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";
$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 庫

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

IronPDF 概覽 是一個為 .NET 開發人員設計的 PDF 程式庫,專為 C# 應用程式中的 PDF 文件生成、編輯和操作而設計。 IronPDF 支援從 HTML 內容、CSS、圖片和 JavaScript 轉換 PDF

其核心功能在於從網頁內容創建PDF文件,提供將HTML字符串、網址和ASPX網頁表單轉換為PDF文件的精簡方法。 IronPDF 在多種應用程式類型中高效運行,包括表單應用程式、伺服器應用程式和網路應用程式。

如何安裝IronPDF庫

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

  1. 在 Visual Studio 中,導航到方案總管,右鍵單擊引用,然後選擇管理 NuGet 套件。

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

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

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

    或者,您可以使用以下命令在套件管理器控制台中安裝它:

Install-Package IronPdf
Install-Package IronPdf
SHELL

範例:將 C# 記錄與 IronPDF 結合使用

讓我們考慮一個實際範例,使用 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
$vbLabelText   $csharpLabel

這個範例創建了一個簡單的Person記錄,然後使用IronPDF生成一個顯示此人姓名的PDF文件。 它展示了 C# 記錄如何無縫整合到 .NET 應用中的 PDF 生成。

C# 紀錄(開發者運作方式):圖 3

IronPDF 授權

C# 記錄(對開發者的運作方式):圖 4

IronPDF 是一款商業產品,提供各種針對不同需求的授權,包括個人和商業選項。 每次購買都附有終身授權和30天退款保證。 探索 IronPDF 的許可選項 在購買許可證之前。

結論

C# 記錄在簡化 .NET 應用程式中的數據建模方面邁出了一個重要的步驟。 透過理解和運用記錄,開發人員可以創建更可靠、可維護且可讀性高的代碼庫。

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

IronPDF 提供了使用 IronPDF 免費試用 測試其功能的機會,然後再決定是否購買。 如果您發現軟體滿足您的需求,您可以購買價格從$749 開始的授權。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
C# 使用語句(為開發人員工作的方式)
下一個 >
C#操作(開發者如何運作)