ValueTuple クラスを利用して書き換え可能な複数の値を保持するオブジェクトを作成する - C#

ValueTuple クラスを利用して書き換え可能な複数の値を保持するオブジェクトを作成するコードを紹介します。

概要

こちらの記事ではTupleクラスを利用して複数の値を保持するオブジェクトの作成コードを紹介しました。 Tupleクラスでは、値の代入はオブジェクトの作成時のコンストラクタで実行し、以降は値の書き換えはできません。 値の書き換えをする場合は、ValueTupleクラスを利用すると実現できます。
この記事では、ValueTapleクラスを利用して、複数の値を保持するオブジェクトを作成するコードを紹介し余す。

書式

宣言は次の書式を利用します。
ValueTuple<(型名1), (型名2), .... (型名n)> (オブジェクト名);

ValueTupleクラスに保持できる値の数は8つまでです。

値の代入はコンストラクタ、またはメンバ名で実行します。
(Tuple型のオブジェクト) = new ValueTuple<(型名1), (型名2), .... (型名n)>( (値1), (値2), ... (値n) );
(Tuple型のオブジェクト).Item(n) = (値n)

要素にアクセスする場合は、メンバ名に Item(n) を指定すると値を参照できます。3つ目の値にアクセスする場合は (オブジェクト名).Item3 となります。

プログラム例

UI

下図のフォームを作成します。

コード

下記コードを記述します。
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 FormValueTupleClass : Form
  {
    public FormValueTupleClass()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      ValueTuple<int, string, string> data = new ValueTuple<int, string, string>(4, "Camel Caramel", "らくだキャラメル");
      //ValueTuple<int,string,string> data = ValueTuple.Create<int, string, string>(4,"Camel Caramel","らくだキャラメル"); //こちらのコードでも可
      textBox1.Text += string.Format("(id, Name(ja))=({0:d},{1})\r\n", data.Item1, data.Item3);
    }
  }
}

解説

ValueTuple オブジェクトのクラスを宣言し、ValueTupleクラスのコンストラクタでValueTapleオブジェクトを作成しています。
  ValueTuple<int, string, string> data = new ValueTuple<int, string, string>(4, "Camel Caramel", "らくだキャラメル");

ValueTapleクラスの Create メソッドを呼び出す方法でもValueTapleオブジェクトを作成できます。
  ValueTuple<int,string,string> data = ValueTuple.Create<int, string, string>(4,"Camel Caramel","らくだキャラメル"); 

ValueTapleオブジェクトから値を参照してテキストボックスに表示します。Item1 で1つ目の値、Item3 で3つ目の値をテキストボックスに表示します。
  textBox1.Text += string.Format("(id, Name(ja))=({0:d},{1})\r\n", data.Item1, data.Item3);

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[buttton1]をクリックします。ValueTuple クラスのオブジェクトが作成され値が代入されます。 代入した値を参照してテキストボックスにValueTuple オブジェクトの値が表示される動作を確認できました。

値の変更

ValueTapleはTapleと異なり、値の変更が可能です。

以下のコードはコンパイルエラーが発生せずにビルドできます。
    private void button2_Click(object sender, EventArgs e)
    {
      ValueTuple<int, string, string> data = new ValueTuple<int, string, string>(4, "Camel Caramel", "らくだキャラメル");
      data.Item2 = "Whitebear Icecream";
      data.Item3 = "しろくまアイス";

      textBox1.Text += string.Format("(id, Name(ja))=({0:d},{1})\r\n", data.Item1, data.Item3);
    }

プロジェクトを実行し、ボタンをクリックします。元の値を変更した値がテキストボックスに表示されます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-11-05
作成日: 2022-11-04
iPentec all rights reserverd.