.NET ヘルプ

C# レコード(開発者向けの仕組み)

C# レコードは、不変データモデルの作成を容易にし、定型コードを削減することでコーディング体験を向上させるために導入された強力な機能です。 このチュートリアルは、初心者向けにC#のレコードの概念を簡単に理解できるように、構文、使用方法、および利点について説明することを目的としています。

データ転送オブジェクトや構成、または単にデータを効率的に表現する方法を必要としている場合、C#のレコードは簡潔で開発者に優しいアプローチを提供します。 この記事の後半では、IronPDFについても議論します。

C# レコードとは何ですか?

C#のレコードは、不変のデータモデルを定義するための簡素化された文法を提供する参照型です。 伝統的なクラス定義とは異なり、レコードは参照の等価性ではなく、値に基づく等価性を強調します。 これは、2つのレコードインスタンスが同一のオブジェクト位置を指しているだけではなく、そのプロパティ値が同じである場合に等しいと見なされることを意味します。

レコードタイプ: クラスとストラクト

C#には2つの主要なレコードのタイプがあります:

  • レコードクラス: 参照型であるデフォルトのレコードタイプ。
  • Record struct:値型を必要とするシナリオのために導入され、これらはデフォルトで不変であり、レコードクラスと同様に値に基づいた比較を提供します。

レコード宣言

レコードを宣言するのは簡単です。 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

レコードの操作

レコードは、データ中心の型の作成と使用を簡素化します。継承をサポートし、非破壊的なミューテーションを可能にし、デバッグを容易にするための組み込みフォーマットを提供します。 これらの機能を例を通じて探ってみましょう。

レコードの作成と比較

次の例では、人物レコードのインスタンスを2つ作成することを考えてみましょう。

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は2つの異なるインスタンスですが、そのプロパティ値に基づいて等しいと見なされるため、値に基づく等価性が示されています。 これは、参照型のデフォルトの動作から大きく離れたものであり、参照の等価性に焦点を当てています。

イミュータブルプロパティ

設計上、レコードのプロパティは不変です。 これは、レコードインスタンスが作成された後にそのプロパティ値を変更できないことを意味します。

// 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コンテンツからPDF、CSS、画像、およびJavaScriptのレンダリングをサポートしています。

その中核となる機能は、WebコンテンツからPDF文書を作成することであり、HTML文字列、URL、ASPX WebフォームをPDFファイルに変換する合理的なアプローチを提供します。 IronPDFは、フォームアプリケーション、サーバーアプリケーション、およびWebアプリケーションなど、さまざまなアプリケーションタイプで効率的に動作します。

IronPDFライブラリのインストール方法

IronPDFのインストールは簡単であり、Visual StudioのNuGetパッケージマネージャーを介して実行できます。 以下の手順に従ってください:

  1. Visual Studioで、ソリューション エクスプローラーに移動し、[参照]を右クリックして、[NuGet パッケージの管理]を選択します。

  2. NuGet パッケージ マネージャーで、「参照」を選択し、「IronPdf」を検索します。

  3. IronPDFパッケージを見つけてインストールをクリックします。

    C# レコード(開発者向けのしくみ):図2

    または、以下のコマンドを使用してパッケージ マネージャー コンソールでインストールすることができます:

Install-Package IronPdf
Install-Package IronPdf
SHELL

例:C# Recordを使用した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# Record(開発者向けの仕組み):図4

IronPDFは、個人および商業オプションを含むさまざまなニーズに合わせたライセンスを提供する商用製品です。 各購入にはライセンスの期限が永久に続くことと、30日間の返金保証が含まれています。 IronPDF のライセンスオプションを探る前にライセンスを購入してください。

結論

C# レコードは、.NET アプリケーションにおけるデータモデリングの簡素化に向けた重要な一歩を表しています。 レコードを理解し活用することで、開発者はより信頼性が高く、保守性があり、読みやすいコードベースを作成できます。

大規模なアプリケーションやシンプルなデータ構造に取り組む際、レコードが提供する機能(不変性から値ベースの等価性まで)は、C#ツールキットにおいて欠かせないツールとなります。

IronPDF は購入を決定する前に、IronPDF Free Trial を使用してその機能をテストする機会を提供します。 ソフトウェアがあなたのニーズを満たしていると判断した場合、$749からライセンスを購入することができます。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C# `Using`ステートメント(開発者向けの使用方法)
次へ >
C# Action (開発者向けの動作方法)