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も利用できるため、用途に応じて使い分けるとよいでしょう。
-
C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説
C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System
-
C#のDivideByZeroExceptionクラスとは?ゼロ除算例外の基本と使い方を解説
C#における例外は、すべてクラスとして表現されます。C#の例外クラスは、主にSystem.Exceptionクラスから直接または間接的に派生しており、代表的な派生クラスとしてはSystem.ApplicationExceptionやSystem.SystemExceptionなどが挙げられます。 System.DivideByZeroExceptionは、整数値をゼロで除算しようとした際に発生するエラーを処理するための例外クラスです。この例外はSystem.ArithmeticExceptionの派生クラスであり、プログラムの実行中にゼロ除算が行われると、共通言語ランタイム(CLR)によって自