C#でもPythonなどと同じようにtuple型が使えます。
tuple型の使い方
( )
と,
を使って(1, 2, "abc")
のような感じで書くとtuple型になります。
各要素の参照はItem1
、Item2
、Item3
になります。
サンプル
using System;
public class Example1
{
static public void Main ()
{
var tuple = (1, 2, "abc");
Console.WriteLine($"{tuple.Item1} {tuple.Item2} {tuple.Item3}");
}
}
実行結果
1 2 abc
var
の部分はValueTuple<int, int, string>
と書くこともできます。
Listでtuple型を使いたい場合
List
と組み合わせて使いたい場合は
List<ValueTuple<int, int, string>>
もしくは
List<(int, int, string)>
のようにして使い▽ます。
サンプル
using System;
using System.Collections.Generic;
public class Example2
{
static public void Main ()
{
var list = new List<(int, int, string)>();
list.Add((1, 2, "abc"));
list.Add((3, 4, "def"));
foreach(var tuple in list)
{
Console.WriteLine($"{tuple.Item1} {tuple.Item2} {tuple.Item3}");
}
}
}
実行結果
1 2 abc
3 4 def
Tuple Class
ValueTupleの方が使い易いと思いますが、これとは別にTuple Classというものもあります。
使い方は次のような感じです。
サンプル
using System;
public class Example3
{
static public void Main ()
{
var tuple = Tuple.Create(1, 2, "abc");
Console.WriteLine($"{tuple.Item1} {tuple.Item2} {tuple.Item3}");
}
}
実行結果
1 2 abc
ValueTupleとTuple Classの変換
ValueTupleをTuple Classに変換したい場合は.ToTuple()
、Tuple ClassをValue Tupleに変換したい場合は.ToValueTuple()
を使って相互に変換できます。
サンプル
using System;
public class Example4
{
static public void Main ()
{
Tuple<int, int, string> tuple1 = (1, 2, "abc").ToTuple();
ValueTuple<int, int, string> tuple2 = Tuple.Create(3, 4, "def").ToValueTuple();
Console.WriteLine($"{tuple1.Item1} {tuple1.Item2} {tuple1.Item3}");
Console.WriteLine($"{tuple2.Item1} {tuple2.Item2} {tuple2.Item3}");
}
}
実行結果
1 2 abc
3 4 def
リンク
Tuple types – C# Guide | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/tuples
Tuple Class (System) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.tuple