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

C#でメソッドから複数の値を返す方法とは?ValueTupleの使い方を解説

C#でメソッドから複数の値を返すには?

C#では、タプル(Tuple)を使用することで、メソッドから複数の値を返すことができます。タプルを使うと、互いに関連があるかどうかにかかわらず、複数の値をひとつのデータセットとして格納できます。最新のタプルであるValueTupleは、C# 7.0(.NET Framework 4.7)で導入されました。

ValueTupleはパフォーマンスに優れているだけでなく、開発者が任意に付けた名前で各要素を参照できる点も大きな特徴です。既存のメソッドから複数の値を返すための軽量な仕組みを提供しており、System.ValueTuple NuGetパッケージとして利用できます。

public (int, string, string) GetPerson() { }

例1:Item1〜Item3でタプルの要素にアクセスする

using System;
namespace DemoApplication{
   class Program{
      public static void Main(){
         var fruits = GetFruits();
         Console.WriteLine($"Fruit Id: {fruits.Item1}, Name: {fruits.Item2}, Size:
         {fruits.Item3}");
         Console.ReadLine();
      }
      static (int, string, string) GetFruits(){
         return (Id: 1, FruitName: "Apple", Size: "Big");
      }
   }
}

出力結果

上記コードの出力は以下のとおりです。

Fruit Id: 1, Name: Apple, Size: Big

この例では、GetFruits()メソッドが複数の値(int, string, string)を返していることがわかります。戻り値のタプルの各要素には、fruits.Item1、fruits.Item2、fruits.Item3のようにアクセスします。

さらに、分解(デコンストラクション)を使えば、個々の要素を直接取り出すことも可能です。

(int FruitId, string FruitName, string FruitSize) = GetFruits();

例2:分解を使って個々の要素を取得する

using System;
namespace DemoApplication{
   class Program{
      public static void Main(){
         (int FruitId, string FruitName, string FruitSize) = GetFruits();
         Console.WriteLine($"Fruit Id: {FruitId}, Name: {FruitName}, Size:
         {FruitSize}");
         Console.ReadLine();
      }
      static (int, string, string) GetFruits(){
         return (Id: 1, FruitName: "Apple", Size: "Big");
      }
   }
}

出力結果

上記コードの出力は以下のとおりです。

Fruit Id: 1, Name: Apple, Size: Big

例2のように分解構文を利用すると、Item1やItem2といった番号ではなく、意味のある変数名(FruitId、FruitName、FruitSize)で値を受け取れるため、コードの可読性が大きく向上します。複数の値を返したい場面では、outパラメータや独自クラスの代わりにValueTupleを活用すると、簡潔かつ効率的に実装できます。

  1. Redisで複数の文字列値を一括設定する方法 – MSET・MSETNXコマンド徹底解説

    このチュートリアルでは、RedisのMSETコマンドとMSETNXコマンドを使って、複数の文字列値をそれぞれ対応するキーに一括設定する方法を解説します。 MSETコマンドとは MSETコマンドは、複数の文字列値を指定したキーにまとめて設定するためのコマンドです。指定したキーのいずれかがすでに存在する場合、そのデータ型に関係なく値が上書きされます。また、キーに関連付けられていた有効期限(TTL)も削除される点に注意が必要です。 MSETはアトミック(原子性を持つ)な操作であるため、指定されたすべてのキーが同時に設定され、コマンドが失敗することはありません。クライアントが「一部のキーだけ更新されて

  2. ExcelのVLOOKUP関数で複数の値を返す8つの方法【関数・フィルター活用】

    別のワークシートや同じシート内から値を取り出したいとき、真っ先に思い浮かぶのがExcelのVLOOKUP関数ではないでしょうか。しかし、VLOOKUP関数には大きな弱点があります。それは一度に返せる値が1つだけという点です。この関数を使って複数の値を検索・抽出するには、ひと工夫が必要になります。本記事では、その具体的な方法を順を追って解説します。 また、INDEX、SMALL、MATCH、ROW、COLUMNSなどの他のExcel関数を組み合わせれば、複数の値を柔軟に抽出できます。さらに、詳細フィルター(Advanced Filter)、オートフィルター、テーブルとして書式設定といったExce