.NET ヘルプ

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

リーガン・パン
リーガン・パン
2024年4月3日
共有:

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

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

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

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

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

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

  • Record クラス: 既定のレコード型であり、これは参照型です。
  • レコード構造体: 値型を必要とするシナリオ向けに導入され、デフォルトで不変性を持ち、レコードクラスと同様に値ベースの比較を提供します。

レコード宣言

レコードを宣言するのは簡単です。 レコードを定義するには、record キーワードに続けてタイプを指定します。(クラスまたは構造体)レコードの名前。 例えば、シンプルな人物レコードは次のように宣言できます:

public record class Person(string FirstName, string LastName);
public record class Person(string FirstName, string LastName);

この宣言にはFirstNameおよびLastNameの位置パラメータが含まれており、内部でこれらのプロパティの公開プロパティとプライマリコンストラクタを生成します。

レコードの不変性

レコードは不変であるように設計されています。つまり、一度レコードインスタンスが作成されると、そのプロパティ値は変更できません。 この不変性は、特に並行操作を扱う際に、予測可能でスレッドセーフなアプリケーションを作成する上で重要です。

イミュータブル レコード 構造体

不変レコード構造体は、記録クラスと同様に宣言されますが、record struct構文を使用します。 それは、レコードの不変性と値ベースの比較を、値型のパフォーマンス利点と組み合わせます。

public readonly record struct ImmutablePerson(string FirstName, string LastName);
public readonly record struct ImmutablePerson(string FirstName, string LastName);

レコードの操作

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

レコードの作成と比較

次の例では、人物レコードのインスタンスを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

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

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

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

// This will result in a compilation error
// person1.FirstName = "Jane";
// This will result in a compilation error
// person1.FirstName = "Jane";

レコードによる継承

レコードは継承をサポートしており、データモデルの階層を作成することができます。 以下の方法でベースレコードを拡張できます:

public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);
public record Employee(string FirstName, string LastName, string Department) : Person(FirstName, LastName);

このEmployeeレコードはPersonを拡張し、追加のDepartmentプロパティを追加します。

高度なレコード機能

非破壊変異

レコードは、変更された一部のプロパティを持つ既存のレコードインスタンスから新しいレコードインスタンスを作成するための組み込みメソッドを提供します。これは非破壊変異として知られています。

var updatedPerson = person1 with { FirstName = "Jane" };
var updatedPerson = person1 with { FirstName = "Jane" };

組み込みフォーマッティング

レコードには、デバッグやログ記録を容易にするための組み込みフォーマット機能が備わっており、プロパティの文字列表現を自動的に提供します。

Console.WriteLine(person1);
Console.WriteLine(person1);

C#レコードを使用する利点

  • 簡素化された構文: レコードは定型化されたコードの必要性を減らし、モデルをより簡潔で読みやすくします。
  • イミュータブルデータモデル: レコードの不変性は、スレッドセーフなアプリケーションの作成に役立ちます。
  • 値ベースの等価性: Records は、参照の等価性ではなく値ベースの等価性を使用するため、データ中心の型に最適です。
  • 継承のサポート: レコードは他のレコードから継承することができ、コードの再利用や階層型データモデルが可能になります。

IronPDFの紹介:C# PDFライブラリ

C# レコード(開発者向けの動作方法):図 1

IronPDFの概要は、C#アプリケーション内でPDFドキュメントを生成、編集、および操作するために設計された、.NET開発者向けの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

例IronPDFでC#レコードを使う

実用的な例を考えてみましょう。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");
    }
}

次の例では、シンプルなPersonレコードを作成し、IronPDFを使用してその人物の名前を表示するPDFドキュメントを生成します。 それは、C#レコードが.NETアプリケーションでのPDF生成にどれほどシームレスに統合できるかを示しています。

C# レコード (開発者にとっての動作方法): 図 3

IronPDF ライセンシング

C# レコード (開発者にとっての使い方): 図4

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

結論

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

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

IronPDFは、その機能をテストする機会を提供しますIronPdf 無料トライアル購入を決定する前に。 ソフトウェアがニーズに合っている場合、$749から始まるライセンスを購入できます。

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
< 以前
C# `Using`ステートメント(開発者向けの使用方法)
次へ >
C# Action (開発者向けの動作方法)