"(型名 変数名, 型名 変数名, .....) = 変数名" のコードの意味 - タプルの分解 - C#

C#で(型名 変数名, 型名 変数名, .....) = 変数名 と記述されているコードの紹介をします。

概要

(型名 変数名, 型名 変数名, .....) に対して代入をするコードにより、タプルの分解という動作が実行できます。タプルの分解により、タプル内の複数の変数を、通常の複数の変数にまとめて代入することができます。

書式

(型名 変数名, 型名 変数名, .....) = タプル変数名

コード例

(int px, int py, int pz) = 3d_position;
(string key, string value) = KVItem;

プログラム

UI

下図の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 SimpleTuple
{
  public partial class FormDeconstruction : Form
  {
    public FormDeconstruction()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      (int x, int y, int z, string name) pos3D = (x: 120, y: 60, z: 220, name: "くじらポイント");

      (int nx, int ny, int nz, string nname) = pos3D;
      textBox1.Text += string.Format("x: {0:d}\r\n", nx);
      textBox1.Text += string.Format("y: {0:d}\r\n", ny);
      textBox1.Text += string.Format("z: {0:d}\r\n", nz);
      textBox1.Text += string.Format("name: {0}\r\n", nname);
    }
  }
}

解説

  (int nx, int ny, int nz, string nname) = pos3D;
のコードにより、pos3Dのタプルに代入された値を nx,ny,nz,nname 変数に分解しています。値の代入は左から順番に実行されるため
  • nx ← pos3D.x
  • ny ← pos3D.y
  • nz ← pos3D.z
  • nname ← pos3D.name
の順番で変数に代入されます。

実行結果

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


[button1]をクリックします。タプルに代入された値が、分解され通常の変数に代入されます。分解された変数の値をテキストボックスに表示しています。

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