例を使用した C# のレコード型の紹介

Liwo Shi Yongshita C Norekodo Xingno Shao Jie



レコード型は、C# 9 で導入された新機能で、主にデータの格納に使用されるクラスを作成するための単純化された構文を提供します。レコード型は、データを保持するための一連のプロパティを定義するクラスですが、等値比較、ハッシュなどの他の機能も含まれています。この記事では、C# のレコード型の概念を紹介し、その利点と制限について説明します。

レコードタイプの必要性

レコード型を使用する主な利点の 1 つは、データのみを保持するクラスを定義するためのより簡潔な構文を提供することです。これにより、コードを読みやすく理解しやすくすると同時に、記述する必要のあるコードの量を減らすことができます。さらに、レコード型はデフォルトで不変になるように設計されているため、可変状態によって引き起こされるバグを防ぐことができます。

レコード型を使用するもう 1 つの利点は、等価比較、ハッシュ コード、および文字列表現のサポートが組み込まれていることです。







C# のレコード型の概要

C# のレコード型は、小さくて不変のデータ構造の型を定義する簡潔な方法を提供します。新しいレコードを作成するときに、コンストラクターでプロパティの値を渡し、プロパティ構文を使用してそれらの値にアクセスできます。これらは、明確に定義された構造を持ち、作成後に変更する必要のないオブジェクトの作成と使用を簡素化するために使用されます。



公的記録 < レコード名 > ( < パラメータリスト > ) ;

public キーワードは、プログラム内の他のクラスがレコード型にアクセスできるようにします。 record キーワードはオブジェクトのタイプを定義し、その後にレコード タイプの名前が続きます。 ParameterList は、レコード タイプのプロパティを定義します。以下は、名前、部門、カテゴリなどの会社の詳細を保存した例です。以下はそのコードです。



システムを使用する;

/// Name、Department、Category の 3 つの文字列プロパティを持つ CompanyDetails というレコードを定義します。
レコード会社詳細 ( 文字列 名前、文字列 部門、文字列 カテゴリ ) ;

クラス プログラム
{
static void メイン ( [ ] 引数 )
{
/// CompanyDetails レコードの新しいインスタンスを作成して渡す プロパティ値
CompanyDetails company = 新しい CompanyDetails ( 「Linux ヒント」 「コンテンツライティング」 「リナックス」 ) ;

/// 会社名、部署名、部類をプリントアウト
Console.WriteLine ( $ 「会社名: {company.Name}」 ) ;
Console.WriteLine ( $ '部門: {company.Department}' ) ;
Console.WriteLine ( $ 「カテゴリ: {company.Category}」 ) ;
}
}

このプログラムでは、Name、Department、Category の 3 つのプロパティを持つ CompanyDetails というレコードを作成します。これらはそれぞれ文字列です。次に、company という名前の CompanyDetails の新しいインスタンスを作成し、各プロパティの値を渡します。次に、Console.WriteLine ステートメントは、会社オブジェクトの Name、Department、および Category プロパティの値を出力します。コードの出力は次のとおりです。





C# で複数のレコード タイプを定義することもでき、各レコード タイプは独自の一意のプロパティ セットを持つことができます。たとえば、従業員用に 1 つのレコード タイプを定義し、会社の詳細用に別のレコード タイプを定義できます。そのためのコードは次のとおりです。



システムを使用する;

/// 会社の詳細を保存するためのレコードの定義
レコード会社詳細 ( 文字列 名前、文字列 部門、文字列 カテゴリ ) ;

/// 従業員の詳細を保存するためのレコードの定義
従業員の詳細を記録する ( 文字列 Name、int EmployeeID、int Age ) ;

クラス プログラム
{
static void メイン ( [ ] 引数 )
{
/// CompanyDetails レコードのインスタンスを作成し、その値を初期化する
var companyDetails = 新しい CompanyDetails ( 「Linux ヒント」 「コンテンツライティング」 「リナックス」 ) ;

/// 文字列補間を使用して CompanyDetails レコードの値を出力する
Console.WriteLine ( $ 「会社名: {companyDetails.Name}」 ) ;
Console.WriteLine ( $ '部署: {companyDetails.Department}' ) ;
Console.WriteLine ( $ 「カテゴリー: {companyDetails.Category}」 ) ;

/// EmployeeDetails レコードのインスタンスを作成し、その値を初期化する
var employeeDetails = 新しい EmployeeDetails ( 'マーク' 7834 25 ) ;

/// 文字列補間を使用して EmployeeDetails レコードの値を出力する
Console.WriteLine ( $ '従業員名: {employeeDetails.Name}' ) ;
Console.WriteLine ( $ '従業員 ID: {employeeDetails.EmployeeID}' ) ;
Console.WriteLine ( $ '従業員の年齢: {employeeDetails.Age}' ) ;
}
}

まず、CompanyName、Department、Category の 3 つのプロパティを持つレコード タイプ CompanyDetails を定義します。次に、CompanyDetails レコードの新しいインスタンスを作成し、そのプロパティを値「Linux ヒント」、「コンテンツ ライティング」、および「Linux」で初期化します。

次に、Name、EmployeeID、Age の 3 つのプロパティを持つ別のレコード タイプ EmployeeDetails を定義します。次に、EmployeeDetails レコードの新しいインスタンスを作成し、そのプロパティを値「Mark」、7834、および 25 で初期化します。最後に、Console.WriteLine ステートメントを使用して、CompanyDetails レコードと EmployeeDetails レコードの両方のプロパティの値を出力します。コードの出力は次のとおりです。

結論

レコード型は、C# 9 で導入された新機能で、データを格納するクラスを作成するための簡素化された構文を提供します。簡潔な構文、自動等値比較、ハッシュ、印刷、不変オブジェクトの簡単な作成など、いくつかの利点があります。

ただし、他のクラスから継承できない、複雑なロジックの機能が制限されているなど、いくつかの制限もあります。全体として、レコード型は C# 開発者にとって便利なツールであり、コードの読みやすさと保守性を向上させることができます。