今回のテーマ
こんばんは、サルモリです。
今回は下記のテーマについて書いていきます。
今回のテーマ
メソッドから2つの値を返す方法
メソッドから2つの値を返す方法としてタプルの使い方を解説します。
今回は下記の順番でタプルを解説していきます。
step
1タプルの使い方
step
2タプルの便利な点
step
3Linqでの使用方法
step
4まとめ
配列、リストなどの記事はこちら
Linqの演習問題はこちら
他の演習問題はこちら
タプルの使い方
複数の値を指定する方法として皆さんは何を思い浮かべますか?
きっと、配列を思い浮かべると思います。なので、早速配列を定義してみます。
配列を使った例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { int[] array = new int[] {1, 2}; Console.WriteLine(array[0]); Console.WriteLine(array[1]); } } } |
result
1
2
こんな感じですね。でも、2つとか3つの値で配列を定義するのもめんどくさいですよね。
そういう時にタプルを覚えておくと簡単に定義できるので、おすすめです。
下記にタプルを使った例を記述します。
タプルを使った例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { (int, int) tapple = (1, 2); Console.WriteLine(tapple.Item1); Console.WriteLine(tapple.Item2); } } } |
result
1
2
簡単に使うことができますね。かっこで型を囲むだけで定義できます。
値を取り出す時はItem1、Item2のように指定するだけで取り出すことが出来ます。
下記のようにタプルの各変数に名前を付けることも可能です。付けた名前を指定してあげれば、取り出すことができます。
タプルを使った例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { (int x, int y) tapple = (1, 2); Console.WriteLine(tapple.x); Console.WriteLine(tapple.y); } } } |
タプル内に別の型を指定することも可能です。
タプルを使った例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { (int, string) tapple = (1, "rockman"); Console.WriteLine(tapple.Item1); Console.WriteLine(tapple.Item2); } } } |
result
1
rockman
タプルの便利な点
この性質からメソッドの返り値を複数個にしたい時にとても強力です。
下記のように、2つの引数を渡すと足し算と引き算した結果を返してくれるメソッドがあるとします。
足し算引き算メソッド例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Calc calc = new Calc(); var result = calc.AddSub(3, 2); Console.WriteLine(result[0]); Console.WriteLine(result[1]); } } class Calc { public int[] AddSub(int x,int y) { int[] result = new int[2]; result[0] = x + y; result[1] = x - y; return result; } } } |
配列を使うのって気が引けますよね。また、返したい型が違えば値を返すことができません。
そんな時にタプルを使いましょう。おまけにString型の変数も追加しました。
タプルを使用した足し算引き算メソッド例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Calc calc = new Calc(); var result = calc.AddSub(3, 2); Console.WriteLine(result.Item1); Console.WriteLine(result.Item2); Console.WriteLine(result.Item3); } } class Calc { public (int,int,string) AddSub(int x,int y) { (int, int, string) result; result.Item1 = x + y; result.Item2 = x - y; result.Item3 = "result"; return result; } } } |
result
5
1
result
この例だけで、かなり便利なことが伝わったと思います。
配列、リストなどの記事はこちら
Linqでの使用方法
タプルはLinqでも使用することができます。個人的には、複数の要素の値を使いたい時に便利だと思っています。
例えば、配列の要素に連番を加えた値を出力したいとします。
Linqを使用すると下記のようになります。
配列に連番を加えた値を出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] animalarray = new string[5] { "cat", "dog", "mouse", "lion", "bear" }; var noanimalarray = animalarray.Select((Name , No) => new { No, Name }).ToArray(); foreach (var item in noanimalarray) { Console.WriteLine(item.No + ":" + item.Name); } } } } |
result
0:cat
1:dog
2:mouse
3:lion
4:bear
このnewで指定するのがくせもので
1 |
new { No, ":" + Name } |
こんな感じで指定できないんですよね。
タプルなら指定することができます。
タプルを使った例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] animalarray = new string[5] { "cat", "dog", "mouse", "lion", "bear" }; var noanimalarray = animalarray.Select((Name , No) => (No,":" + Name)).ToArray(); foreach (var item in noanimalarray) { Console.WriteLine(item.No + item.Item2 ); } } } } |
result
0:cat
1:dog
2:mouse
3:lion
4:bear
タプルを使うことでSelectメソッドの強みを存分に発揮することができます。
タプルとSelectメソッドはとても相性がいいのです。
CHECK
-
【C# sharp Linq】Selectメソッド、Whereメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 C#言語のL ...
続きを見る
まとめ
今回はタプルについて、解説をしました。複数個の値を返したい時などにとても便利なので、覚えておきましょう。
結構使える場面があると思います。
最後まで記事を読んで頂き有難うございます。他の記事も是非よんでくださいね。
配列、リストなどの記事はこちら
Linqの演習問題はこちら
他の演習問題はこちら