カテゴリ: C# 更新日: 2025/07/30

C#の戻り値にタプルを使う方法!複数の値を返すテクニック

C#の戻り値にタプルを使う方法!複数の値を返すテクニック
C#の戻り値にタプルを使う方法!複数の値を返すテクニック

先生と生徒の会話形式で理解しよう

生徒

「C#でメソッドから複数の値を返すことってできますか?」

先生

「はい、C#ではタプルという機能を使えば、1つのメソッドで複数の値をまとめて返すことができますよ。」

生徒

「タプルって何ですか?初めて聞きました!」

先生

「それでは、タプルの意味や使い方を、初心者の方にもわかるように丁寧に説明していきましょう!」

1. タプルとは?初心者向けにわかりやすく解説

1. タプルとは?初心者向けにわかりやすく解説
1. タプルとは?初心者向けにわかりやすく解説

タプル(Tuple)とは、複数の値をひとつのまとまりとして扱うための箱のような構造です。例えば、「名前」と「年齢」をセットで返したいとき、今まではクラスを作ったりrefoutを使って面倒な書き方をしていましたが、C# 7.0以降ではタプルを使うことでとても簡単になります。

たとえば、以下のように書くと、2つの値を1つの戻り値として返すことができます。


(string, int) GetPerson()
{
    string name = "田中";
    int age = 30;
    return (name, age);
}

この例では、「文字列(名前)」と「整数(年齢)」の2つの値をまとめて返しています。

2. タプルを使ってメソッドから複数の値を返す方法

2. タプルを使ってメソッドから複数の値を返す方法
2. タプルを使ってメソッドから複数の値を返す方法

上の例を実際に呼び出して、タプルから値を取り出すにはどうすればよいのでしょうか?

以下のように書くことで、返ってきたタプルの中身を個別に取り出すことができます。


var person = GetPerson();
Console.WriteLine($"名前:{person.Item1}");
Console.WriteLine($"年齢:{person.Item2}");

名前:田中
年齢:30

Item1Item2という書き方でも取り出せますが、もっと読みやすくしたいときは名前付きタプルが便利です。

3. 名前付きタプルでコードをもっと読みやすくしよう

3. 名前付きタプルでコードをもっと読みやすくしよう
3. 名前付きタプルでコードをもっと読みやすくしよう

名前付きタプルを使えば、Item1Item2の代わりに、自分で付けた分かりやすい名前でアクセスできます。


(string name, int age) GetPerson()
{
    return ("田中", 30);
}

var person = GetPerson();
Console.WriteLine($"名前:{person.name}");
Console.WriteLine($"年齢:{person.age}");

名前:田中
年齢:30

このように、nameageという名前で取り出せるので、初心者でもとても読みやすくなります。

4. 戻り値にタプルを使うメリット

4. 戻り値にタプルを使うメリット
4. 戻り値にタプルを使うメリット

C#で戻り値にタプルを使うメリットはいくつかあります。

  • クラスや構造体を定義しなくても複数の値を返せる
  • outrefを使わなくても良いので、コードがシンプルになる
  • メソッドの結果をそのまま分かりやすく利用できる

特にプログラミング初心者にとって、タプルはとても使いやすく、覚えておくと便利な機能です。

5. より実践的なタプルの使い方

5. より実践的なタプルの使い方
5. より実践的なタプルの使い方

次は、少し応用的な例として、計算結果とその説明を一緒に返すメソッドを考えてみましょう。


(string message, int result) AddNumbers(int a, int b)
{
    int sum = a + b;
    return ($"{a} + {b} の結果は:", sum);
}

var data = AddNumbers(5, 8);
Console.WriteLine(data.message);
Console.WriteLine(data.result);

5 + 8 の結果は:
13

このように、説明文と数値の2つを一緒に返すことができるのはタプルならではの強みです。

6. タプルの中身を分解して使う(分解代入)

6. タプルの中身を分解して使う(分解代入)
6. タプルの中身を分解して使う(分解代入)

タプルは、変数に一度入れなくても、呼び出し時に分解して代入することもできます。


(string name, int age) = GetPerson();
Console.WriteLine($"名前:{name}");
Console.WriteLine($"年齢:{age}");

名前:田中
年齢:30

このように、一行でタプルの中身をそれぞれの変数に分けることができるのも、非常に便利なテクニックです。

カテゴリの一覧へ
新着記事
C#でタイムスタンプの精度を上げるためのテクニックを徹底解説!(初心者向け)
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.7
Java&Spring記事人気No7
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド