.NET開発者のためのブログメディア

【C#入門】C#のタプル(tuple)を使ってできることとは
2020年04月10日
C#では、様々な機能が盛り込まれています。最も重要な要素の1つであるデータ処理については、複数の型を同時に扱うタプル型というものがあり、複数の戻り値を設定することが可能です。
- PG
- 最近C#を使っているんですが、タプルを使うとどんなことができるんですか?
- PL
- まずはタプルの概要から見ていきましょうか。そのあとで実用例を紹介します。
目次
C#のタプルの概要
C#のタプルは、一言で表すならば複数のオブジェクトをひとまとめにして扱うことができるものです。構造体などを使って複数の要素を一括して扱うケースがありますが、タプルは構造体などよりも簡単な条件のもとで利用することができます。もう1つの大きな特徴として、複数の戻り値を構造体やクラス定義をせずにまとめて返すことができることが挙げられます。
タプルのメリットやデメリット、使用例
C#に限らず、プログラムコードを書く上ではクラス名やメソッド名などに動作がわかるように名前を付けるのが一般的です。しかし、中には名前を付ける必要がないものが少なからずあります。そうした場合に名前の設定を省略できるタプルを使用することが可能です。複数の戻り値を設定したい場合にもタプルを使用することがあります。
また、名称がないのでどういった戻り値の順で格納されているかを定義書等で決めておかないと該当メソッドを使う人が混乱する、同じデータ型のタプルにするとどの順番でも格納が可能なため、上記と同じく定義書等で決めておかないと代入する人が混乱するといった点に注意が必要です。
タプルの基本的な宣言
1 2 3 4 |
// 名前のないタプルの宣言 var unnamed = ("one", "two"); // 名前付きのタプルの宣言 var named = (first: "one", second: "two"); |
複数の戻り値を返すタプル
1 2 3 4 5 6 7 8 |
private static (int, string, int) tapul_test() { int ret_a = 1; string ret_str = "戻り値"; int ret_b = 0; return (ret_a, ret_str, ret_b); } |
- PG
- なるほど、複数の戻り値を設定できるのは便利です。利用頻度が高くなりそうですね!
- PL
- メンバー名だけで十分な場合など、名前なしで型を設定したいときにも使えますから、いろんな場面で使えますよ。
頻繁ではないもののタプルを使いたい場面は少なからずある
規模の大きなプロジェクトになるほど、より汎用的な型や戻り値を設定したい場面が出てきます。そのような場合にタプルを利用していくことで、より効率よく、より簡潔なコードが書けるでしょう。ただ、利用する場面を間違えることのないように、タプルの特性を理解した上で使う必要があります。