C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のTupleクラスとは?4つ組タプルの基本と実装例をわかりやすく解説

C#のTuple<T1, T2, T3, T4>クラスは、4つの要素を持つタプル(4-tuple、クアドラプルとも呼ばれます)を表すクラスです。タプルとは、複数の要素を順序付けて格納できるデータ構造のことで、異なる型の値をひとまとめに扱えるのが大きな特徴です。

Tupleクラスの主な用途

Tuple<T1, T2, T3, T4>クラスは、以下のような場面で活用されます。

  • データセットへの簡単なアクセス
  • データセットの容易な操作
  • 単一のデータセットとしての表現
  • メソッドから複数の値を返したい場合
  • メソッドに複数の値を渡したい場合

Tupleクラスが持つ4つのプロパティ

Tuple<T1, T2, T3, T4>クラスには、各要素に対応する以下の4つのプロパティがあります。

  • Item1 ― 現在のTuple<T1, T2, T3, T4>オブジェクトの1番目の要素の値を取得します。
  • Item2 ― 現在のTuple<T1, T2, T3, T4>オブジェクトの2番目の要素の値を取得します。
  • Item3 ― 現在のTuple<T1, T2, T3, T4>オブジェクトの3番目の要素の値を取得します。
  • Item4 ― 現在のTuple<T1, T2, T3, T4>オブジェクトの4番目の要素の値を取得します。

サンプルコード①:文字列の4つ組タプル

それでは、C#で4つ組タプルを実装する例を見てみましょう。ここでは文字列型のタプルを作成し、各要素の値を取得・比較しています。

using System;
public class Demo {
    public static void Main(string[] args) {
        Tuple<string,string,string,string> tuple = new Tuple<string,string,string,string>("nathan", "steve", "katie", "tim");
        Console.WriteLine("Value (Item1)= " + tuple.Item1);
        Console.WriteLine("Value (Item2)= " + tuple.Item2);
        Console.WriteLine("Value (Item3)= " + tuple.Item3);
        Console.WriteLine("Value (Item4)= " + tuple.Item4);
        if (tuple.Item1 == "nathan") {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item1);
        }
        if (tuple.Item2 == "jack") {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item2);
        }
        if (tuple.Item3 == "katie") {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item3);
        }
        if (tuple.Item4 == "tom") {
            Console.WriteLine("Exists: Tuple Value = " + tuple.Item4);
        }
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Value (Item1)= nathan
Value (Item2)= steve
Value (Item3)= katie
Value (Item4)= tim
Exists: Tuple Value = nathan
Exists: Tuple Value = katie

この例では、「nathan」と「katie」の比較条件が一致したため、該当するメッセージのみが出力されています。

サンプルコード②:整数の4つ組タプル

続いて、整数型(int)の4つ組タプルを使った別の例を見てみましょう。

using System;
public class Demo {
    public static void Main(string[] args) {
        Tuple<int,int,int,int> tuple = new Tuple<int,int,int,int>(100, 150, 300, 450);
        Console.WriteLine("Value (Item1)= " + tuple.Item1);
        Console.WriteLine("Value (Item2)= " + tuple.Item2);
        Console.WriteLine("Value (Item3)= " + tuple.Item3);
        Console.WriteLine("Value (Item4)= " + tuple.Item4);
        if (tuple.Item1 == 100) {
            Console.WriteLine("Exists: Tuple Item 1 = " + tuple.Item1);
        }
        if (tuple.Item2 == 250) {
            Console.WriteLine("Exists: Tuple Item 2 = " + tuple.Item2);
        }
        if (tuple.Item3 == 270) {
            Console.WriteLine("Exists: Tuple Item 3 = " + tuple.Item3);
        }
        if (tuple.Item4 == 300) {
            Console.WriteLine("Exists: Tuple Item 4 = " + tuple.Item4);
        }
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Value (Item1)= 100
Value (Item2)= 150
Value (Item3)= 300
Value (Item4)= 450
Exists: Tuple Item 1 = 100

このように、Item1の値「100」だけが条件と一致したため、そのメッセージのみが出力されました。

まとめ

Tuple<T1, T2, T3, T4>クラスを使うことで、4つの異なる値をひとつのオブジェクトとして簡潔に扱えます。メソッドの戻り値で複数の値を返したい場合や、関連するデータをグループ化したい場合に非常に便利なクラスです。なお、C# 7.0以降ではより軽量なValueTupleも利用できるため、用途に応じて使い分けるとよいでしょう。

  1. C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説

    C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System

  2. C#のDivideByZeroExceptionクラスとは?ゼロ除算例外の基本と使い方を解説

    C#における例外は、すべてクラスとして表現されます。C#の例外クラスは、主にSystem.Exceptionクラスから直接または間接的に派生しており、代表的な派生クラスとしてはSystem.ApplicationExceptionやSystem.SystemExceptionなどが挙げられます。 System.DivideByZeroExceptionは、整数値をゼロで除算しようとした際に発生するエラーを処理するための例外クラスです。この例外はSystem.ArithmeticExceptionの派生クラスであり、プログラムの実行中にゼロ除算が行われると、共通言語ランタイム(CLR)によって自