C# の関数から複数の値を返す

Muhammad Maisam Abbas 2024年2月16日
  1. C# の配列を持つ関数から複数の値を返す
  2. C# の構造体/クラスオブジェクトを使用して関数から複数の値を返す
  3. C# の Tuples<T1,T2> クラスを持つ関数から複数の値を返す
  4. C# で (T1,T2) 表記を使用して関数から複数の値を返す
C# の関数から複数の値を返す

このチュートリアルでは、C# の関数から複数の値を返すメソッドを紹介します。

C# の配列を持つ関数から複数の値を返す

配列データ構造は、同じデータ型の複数の値を C# に格納します。配列を使用して、関数から複数の値を返すことができます。次のコード例は、配列を使用して C# の関数から複数の値を返す方法を示しています。

using System;

namespace return_multipe_values {
  class Program {
    public static int[] compare(int a, int b) {
      int[] arr = new int[2];
      if (a > b) {
        arr[0] = b;
        arr[1] = a;
      } else {
        arr[0] = a;
        arr[1] = b;
      }
      return arr;
    }
    static void Main(string[] args) {
      int[] returnvalue = Program.compare(10, 12);
      Console.WriteLine("Smaller Value = {0}", returnvalue[0]);
      Console.WriteLine("Larger Value = {0}", returnvalue[1]);
    }
  }
}

出力:

Smaller Value = 10
Larger Value = 12

compare() 関数から、C# の配列の戻り値の型を使用して 2つの整数値を返しました。このメソッドは、同じデータ型の複数の値を返す必要がある場合に役立ちます。異なるデータ型の複数の値を返したい場合、配列は同じデータ型の値のみを格納するため、配列を使用することはできません。

C# の構造体/クラスオブジェクトを使用して関数から複数の値を返す

構造体とクラスは、関連する値をグループ化するために使用されます。値は同じデータ型である必要はありません。したがって、構造体またはクラスオブジェクトを使用して、C# の関数から複数の値を返すことができます。次のコード例は、構造体オブジェクトを使用して C# の関数から複数の値を返す方法を示しています。

using System;

namespace return_multipe_values {
  struct Values {
    public int x;
    public int y;
  }

  class Program {
    public static Values comparevalues(int a, int b) {
      Values V = new Values();
      if (a > b) {
        V.x = b;
        V.y = a;
      } else {
        V.x = a;
        V.y = b;
      }
      return V;
    }
    static void Main(string[] args) {
      Values returnedvalues = Program.comparevalues(10, 12);
      Console.WriteLine("Smaller Value = {0}", returnedvalues.x);
      Console.WriteLine("Larger Value = {0}", returnedvalues.y);
    }
  }
}

出力:

Smaller Value = 10
Larger Value = 12

まず、関数から返したい値を含む構造体 Values を定義します。次に、C# の戻り値の型として Values 構造を使用して、comparevalues() 関数から複数の値を返しました。戻り値も同じ構造のインスタンスに格納する必要があります。

この目的は、関数の戻り値の型としてクラスを使用することによっても達成できます。次のコードは、クラスを使用して C# の関数から複数の値を返す方法を示しています。

using System;
public class Sample {
  int x;
  int y;
  public void setxy(int v, int u) {
    x = v;
    y = u;
  }
  public void getxy() {
    Console.WriteLine("The smaller value = {0}", x);
    Console.WriteLine("The greater value = {0}", y);
  }
}
public class Program {
  public static Sample compare(int a, int b) {
    Sample s = new Sample();
    if (a > b) {
      s.setxy(b, a);
    } else {
      s.setxy(a, b);
    }
    return s;
  }
  public static void Main() {
    Sample returnedobj = Program.compare(10, 12);
    returnedobj.getxy();
  }
}

出力:

The smaller value = 10
The greater value = 12

まず、関数から返したい値を含むクラス Sample を定義します。次に、C# の関数の戻り値の型として Sample クラスを使用して、compare() 関数から複数の値を返しました。戻り値も同じクラスのインスタンスに格納する必要があります。どちらのメソッドも、関数から異なるデータ型の複数の値を返すのに最適ですが、関数から複数の値を返すためだけにクラスまたは構造体全体を作成するのは、非常に面倒で時間がかかります。

C# の Tuples<T1,T2> クラスを持つ関数から複数の値を返す

タプルは、C# で特定の番号と特定の値の順序を持​​つデータ構造です。タプルは、異なるデータ型の複数の値を持つことができます。Tuple<T1,T2> クラスを使用して、カスタムタプルを定義できます。特定の順序でユーザー定義のデータ型を持つ。次のコード例は、C# の Tuple<T1,T2> クラスを使用して関数から複数の値を返す方法を示しています。

using System;

public class Program {
  public static Tuple<string, string, int> ReturnMultipleValues() {
    var result = Tuple.Create<string, string, int>("value1", "value2", 3);
    return result;
  }
  public static void Main() {
    var returnedvalues = ReturnMultipleValues();
    Console.WriteLine(returnedvalues);
  }
}

出力:

(value1, value2, 3)

関数の戻り値の型を Tuple<string, string, int> で指定することにより、ReturnMultipleValues() 関数から複数の値を返します。つまり、ReturnMultipleValues() 関数は、string データ型の最初の 2つの値と int データ型の最後の値を持つ 3つの値を返します。この戻り値は、同様の構造のタプルまたは var タイプの変数に保存できます。

C# で (T1,T2) 表記を使用して関数から複数の値を返す

Tuple<T1,T2> クラスを使用して関数から複数の値を返すプロセスを簡略化する方法について説明した上記のセクションは、タプルを宣言する (T1, T2) 表記でさらに短縮できます。(T1, T2) 表記は、コードを短縮することにより、Tuple<T1,T2> クラスと同じことを行います。次のコーディング例は、(T1, T2) 表記を使用して C# の関数から複数の値を返す方法を示しています。

using System;

public class Program {
  public static (string, string, int) ReturnMultipleValues() {
    return ("value1", "value2", 3);
    ;
  }
  public static void Main() {
    (string val1, string val2, int val3) = ReturnMultipleValues();
    Console.WriteLine("{0} {1} {2}", val1, val2, val3);
  }
}

出力:

value1 value2 3

上記のコードでは、C# で (T1,T2) 表記を使用して ReturnMultipleValues() 関数から複数の値を返しました。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp Function