C# - メソッド、リスト、変数で item1、item2、itemX などの名前のタプル メンバーを使用しないようにする方法

今年の初めに、名前付き値タプルのリストを作成する方法について投稿しました。名前付きタプルの構文に関するいくつかの例を含む新しい投稿を作成することにしました。あなたが med の場合、構文が何であるかを忘れがちで、必要なときに例を見つけることができません。 Rider または Visual Studio で得られるヘルプは、名前付きタプルにはあま​​り適していないため、このページを作成して他の人を助けることにしました.

注: これは C# 7 の機能であるため、これを機能させるにはそれが必要です。

値を持つ単一の名前付きタプルの作成

名前付きタプルを作成して変数に代入する最も簡単な方法は次のとおりです:

var tuple = (firstname: "peter",  lastname: "rasmussen");
var firstname = tuple.firstname; //peter
var lastname = tuple.lastname; //rasmussen

上記では、最初に値 Peter と rasmussen をタプルの firstname と lastname メンバーに割り当て、次にこれらのメンバーにアクセスしてそれらの値を取得します。この例では文字列を使用していますが、任意の型を使用できます。

値を持つ名前付きタプルのリストを作成する

次の構文を使用して、名前付きタプルのリストを簡単に作成できます:

var tupleList = new List<(string firstname, string lastname)>();
tupleList.Add(("peter", "rasmussen"));

var firstname = tupleList[0].firstname; //peter
var lastname = tupleList[0].lastname; //rasmussen

上記では、firstname という名前の 2 つの文字列を持つタプルを含むことができるリストを作成します。 と lastname .次に、私の名前と姓のタプルをリストに追加し、このアイテム (リスト内の唯一のアイテム) にアクセスします。

コレクション初期化子 (構文シュガー) を使用して、リストを作成するときに値を割り当てることもできます:

var tupleList = new List<(string firstname, string lastname)> {
    ("peter", "rasmussen")
};

var firstname = tupleList[0].firstname; //peter
var lastname = tupleList[0].lastname; //rasmussen

上記は、コレクション初期化子を使用することを除いて、前と同じです。結果は同じです。

名前付きの値のタプルを返すメソッドを作成する

メソッドを呼び出すときに名前付きタプルを返すこともできます:

public (string firstname, string lastname) Get()
{
    return ("peter", "rasmussen");
}
        
//calling the method:
var tuple = Get();

var firstname = tuple.firstname; //peter
var lastname = tuple.lastname; //rasmussen

上記の例では、メソッドは firstname のタプルを返します そして lastname .その後、メソッドが呼び出され、返された名と姓がアクセスされます。

C# 7 より前は、上記の値を保持できるオブジェクトを作成する必要がありました。これにより、多くの場合、戻り値用のラッパー クラスが多数あるコード ベースや、out 変数の使用が導入されます。新しい名前付きタプルはこれをうまく橋渡しします。これらは、クラスの使用がやり過ぎと思われるいくつかの値を返す必要がある場合に理想的です。

それだけです!

これは、さまざまなシナリオで名前付き値タプルを使用する方法の例の短いリストです。これを延長する必要があると思われる場合は、下のコメント欄でお知らせください。その他のフィードバックも歓迎します。