まずはC# 7.0 以降から利用できるタプルについて知っておきましょう。
タプルって何?
Tupleと書いて「タプル」言うようです。
タプルを使うことによって軽量データ構造に複数のデータ要素をグループ化することができます。
タプルの使いどころの1つとしてメソッドの戻り値にタプル型でグルーピングして複数の値を返すことが可能です。
メソッドが複数の戻り値を返す方法は幾つかありますが、タプルを使うことで簡素なコードで実現できるのです。
タプルを使ったサンプルコード
タプルの使い方は様々です。
タプル型を定義するには、すべてのデータ メンバーの型が必要になります。
型のみを定義
(int , string) VariableA = (1,"あいうえお"); Console.WriteLine(string.Format("intの値:{0} stringの値:{1}",VariableA.Item1,VariableA.Item2));
型のみを定義するとItem1,Item2,Item・・・と自動的にフィールド名が付与されます。
フィールド名を定義
var VariableB = (x: 10, y: "かきくけこ"); Console.WriteLine(string.Format("xの値:{0} yの値:{1}",VariableB.x,VariableB.y));
右辺、代入する方にxとyのフィールド名を付けました。
参照するときもこのx,yのフィールド名を使用します。
(int x, string y) VariableC = (20, "さしすせそ"); Console.WriteLine(string.Format("xの値:{0} yの値:{1}",VariableC.x,VariableC.y));
あああ左辺代入される方にフィールド名を付けました。
参照の仕方は先ほどと同様にx,yのフィールド名を使用します。
戻り値を2つ以上返すメソッド
void XMain() { (int , string) VariableD = Test(); Console.WriteLine(string.Format("xの値:{0} yの値:{1}",VariableD.Item1,VariableD.Item2)); } (int,string) Test() { return (30,"たちつてと"); }
呼び出し元でタプルを宣言して戻り値を代入します。
Testメソッドではreturn でタプルを戻します。
まとめ
複数の戻り値を返す方法はoutを使ったり、配列を使ったりして可能ではありますが、タプルを使った方法がいいのではと思っています。
コメント