RSS

C#: タプル (Tuple)

27 4月

Tuple は C# 7 から使用できるデーや型で、複数の値を含む関数値を返す時などに使用できる。

Python のタプルと似ているが、次のような違いがある。

  • 要素の型付けが必要。ただし、型推論ができるので型付けの明示はしなくてもよい。
  • 要素の変更が可能
  • それぞれの要素に名前を付けることができる。例 (a:int, b:string)
  • メタデータはサポートされない。
  • 分解構文で要素を簡単に取り出せる。
  • Python では要素を配列要素のように [] で扱えるが、C# では Item1, Item2, … という変数を使う。

次に Tuple の使用例を示す。

// Tuple

// 整数のペアを表す Tuple
using IntPair = (int, int);

var println = (Object o) => Console.WriteLine(o.ToString());

// 乱数を初期化
var rand = new Random();

// 整数乱数ペアを生成する関数
var getRandomPair = IntPair () => ((int)rand.NextInt64((long)Int32.MaxValue), (int)rand.NextInt64((long)Int32.MaxValue));

println("Tutple");

// Tuple の要素は [] でアクセスできない。その代わり Item1, Item2, ... でアクセスする。
//  Item128 まであるが、可読性が悪くなるので、要素に名前を付けるほうが現実的である。
for (int i = 0; i < 5; i++)
{
  IntPair p = getRandomPair();
  println($"{p.Item1}, {p.Item2}");
}

// Tuple の要素は [] でアクセスできない。 次のように要素に名前を付けてアクセスすることもできる。
for (int i = 0; i < 5; i++)
{
  var (first, last) = getRandomPair();
  println($"{first}, {last}");
}

 
コメントする

投稿者: : 2024/04/27 投稿先 C#, dotNET

 

コメントを残す