【C#】タプル(tuple)について詳しく解説
タプルとは
タプル(Tuple)は、複数の異なる型の値を一つのオブジェクトとしてまとめるデータ構造です。通常のクラスや構造体を定義せずに、一時的なデータのグループを簡単に作成できます。
タプルの基本的な使い方
C#では、タプルを作成する方法がいくつかあります。
Tupleクラスを使う(.NET Framework向け)
var tuple1 = new Tuple(1, "Hello");
Console.WriteLine(tuple1.Item1); // 1
Console.WriteLine(tuple1.Item2); // Hello
タプルリテラル(C# 7.0以降)
var tuple2 = (1, "Hello");
Console.WriteLine(tuple2.Item1); // 1
Console.WriteLine(tuple2.Item2); // Hello
名前付きタプル
タプルの各要素に名前を付けることで、コードの可読性が向上します。
var person = (Id: 1, Name: "John");
Console.WriteLine(person.Id); // 1
Console.WriteLine(person.Name); // John
タプルを返すメソッド
メソッドの戻り値としてタプルを使用すると、複数の値を簡単に返すことができます。
(int, string) GetPerson()
{
return (1, "John");
}
var person = GetPerson();
Console.WriteLine(person.Item1); // 1
Console.WriteLine(person.Item2); // John
タプルの分解(Deconstruction)
タプルを個別の変数に分解することができます。
var (id, name) = GetPerson();
Console.WriteLine(id); // 1
Console.WriteLine(name); // John
タプルとクラスの違い
- タプル: 簡単なデータのグループ化に適しているが、拡張性は低い。
- クラス: 機能を持たせたり、継承やカプセル化が可能。
タプルの制限
タプルには以下のような制限があります。
- 読み取り専用(変更できない)
- 最大要素数は8(それ以上はネストが必要)
まとめ
C#のタプルは、複数の値をまとめるのに便利なデータ構造です。簡単に使えますが、長期的なデータ管理にはクラスや構造体を検討する必要があります。