C#7以降で利用できるタプル型とは異なります。タプル型についてはこちらの記事を参照してください。
Tuple クラスを利用して複数の値を保持するオブジェクトを作成するコードを紹介します。
Tuple クラスを利用すると複数の値を保持するオブジェクトを作成できます。
宣言は次の書式を利用します。
Tuple<(型名1), (型名2), .... (型名n)> (オブジェクト名);
Tupleクラスに保持できる値の数は7つまでです。7つ以上の値を格納する場合は、8個目のパラメーターに Tuple クラスを入れ子にします。
Tuple<(型名1), (型名2), (型名3), (型名4), (型名5), (型名6), (型名7), Tuple<(型名8), (型名9), ... (型名n)>> (オブジェクト名);
値の代入はコンストラクタで実行します。
(Tuple型のオブジェクト) = new Tuple<(型名1), (型名2), .... (型名n)>( (値1), (値2), ... (値n) );
要素にアクセスする場合は、メンバ名に Item(n)
を指定すると値を参照できます。3つ目の値にアクセスする場合は (オブジェクト名).Item3
となります。
下図のフォームを作成します。
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TupleClass
{
public partial class FormTupleClass : Form
{
public FormTupleClass()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Tuple<int, string, string> data = new Tuple<int, string, string>(1,"penguin cookie", "ぺんぎんクッキー");
textBox1.Text += string.Format("(id, Name(ja))=({0:d},{1})\r\n", data.Item1, data.Item3);
}
}
}
int, string, string 型の3つの値を持つ Taple クラスを作成します。コンストラクタで値を代入します。
Tuple<int, string, string> data = new Tuple<int, string, string>(1,"penguin cookie", "ぺんぎんクッキー");
Tupleオブジェクトから値を参照してテキストボックスに表示します。Item1 で1つ目の値、Item3 で3つ目の値をテキストボックスに表示します。
textBox1.Text += string.Format("(id, Name(ja))=({0:d},{1})\r\n", data.Item1, data.Item3);
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。Tupleクラスのオブジェクトに値を代入し、代入した値を参照してテキストボックスに値を表示できました。
Tupleクラスで作成したオブジェクトはコンストラクタでのみ値を設定可能です。Item(n) に対して値の代入はできません。
private void button1_Click(object sender, EventArgs e)
{
Tuple<int, string, string> data = new Tuple<int, string, string>(1,"penguin cookie", "ぺんぎんクッキー");
data.Item2 = "Penguin Cookie"; //この行でコンパイルエラー
textBox1.Text += string.Format("(id, Name(ja))=({0:d},{1})\r\n", data.Item1, data.Item3);
}
コンパイルすると次のエラーが発生します。