C# の Tuple

C# の Tuple とは

C# の Tuple (タプル) とは、複数の値の組み合わせを保持するデータ構造のことです。Tuple は () で囲って、値を指定することで作成できます。

Tuple のひとつ目の項目には Item1 という名前で、二つ目の項目には Item2 という風にアクセスできます。

次の例では ("John", 25) というタプルを変数 p として作成して、 p.Item1 として "John" という文字列に、 p.Item2 として 25 という数値にアクセスしています。

var p = ("John", 25);
Console.WriteLine($"{p.Item1} {p.Item2}");
// John 25

C# の Tuple の項目に名前を付ける

C# の Tuple の項目には名前をつけることができます。値の前にコロン : を付けてその前に項目の名前を設定します。

次の例では、タプルのひとつ目の項目に name、二つ目の項目に age という名前を付けています。

var p = (name: "John", age: 25);
Console.WriteLine($"{p.name} {p.age}");

これによって、 p.Item1 などの序数ではなく、意味のある名前で値にアクセスすることができるようになります。

C# で Tuple を返すメソッドを実装する

メソッドから Tuple として値を返すことで、呼び出し元に複数の値を返すことができます。

次の例では、メソッドの戻り値の型を (string, int) という Tuple にすることで、 呼び出し側では Tuple を受け取ることができています。

using System;

class Program
{
  static void Main(string[] args)
  {
    var p = GetPerson();
    Console.WriteLine($"{p.Item1} {p.Item2}");
  }

  static (string, int) GetPerson()
  {
    return ("John", 25);
  }
}

また、Tuple の項目に名前を付ける場合には、次の例のように戻り値の宣言部分に名前を設定します。

  static void Main(string[] args)
  {
    var p = GetPerson();
    Console.WriteLine($"{p.name} {p.age}");
  }

  static (string name, int age) GetPerson()
  {
    return ("John", 25);
  }

7行目で nameage という項目名を決めているために、 呼び出し側 (8行目) では名前で項目にアクセスできています。

C# の Tuple の分割代入

Tuple にまとめて設定された値を、それぞれ異なる変数にバラバラにして設定することができます。

次の例では ("John", 25) というタプルから、 name 及び age という異なる変数に値を代入しています。

var p = ("John", 25);
var (name, age) = p;
Console.WriteLine($"{name} {age}"); // John 25

このように、ひとまとまりにされていたデータ構造から、バラバラの変数に値を代入することを分割代入といいます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門