【List型】と自分は呼んでいるけど、正確には【Listクラス】らしい。。。
VisualStudioでコードを書いている時に、【青文字は[型]】【水色文字は[クラス]】なんでしょうね。
まぁ今回はそのことは置いといて、【リスト型の中にはラムダ式で書くとスッキリする】内容があるので紹介していきます。
リストの機能として準備されている関数がとっても便利なのです。
この記事では、少しでもリスト型(リストクラス)を使いこなす為のサンプルを紹介していきます。
ForEachメソッド
こんな事ありませんか!?
「リストの中の数字を全部2倍にしたい」とか「リストの中の数字を全部二乗したい」とか「リストの中の文字の最後にカンマをつけたい」とか。。。
Pythonだと一行なのに、C#で書くと意外と手間ですよね。。。そこでラムダ式ですよ!
サンプルとして「リストの中の数字を全部2倍にしたい」を紹介したいと思います。
ForEachメソッドを知らない、ラムダ式を分からない人の場合
こんな感じですかね。
List<int> lstSample = new List<int> { 1, 2, 4, 8, 16 };
List<int> lstTemp = new List<int>();
foreach (int i in lstSample)
{
lstTemp.Add(i * 2);
}
foreach (int i in lstTemp)
{
Console.WriteLine(i);
}
赤の太字と青の太字を置き換えていきます。
ForEachメソッドを使い、ラムダ式ができる人の場合
こうなります。
List<int> lstSample = new List<int> { 1, 2, 4, 8, 16 };
List<int> lstTemp = new List<int>();
lstSample.ForEach(i => lstTemp.Add(i * 2));
lstTemp.ForEach(i => Console.WriteLine(i));
こんな感じでスッキリします。
解説
(リスト型).ForEach()のForEach部分にマウスを持っていくと、説明がでてきます。
引数には、Action<int>が必要だと。。。
もう少しかみ砕くと、引数には < 戻り値のない & 引数[ int型 ] の関数 >が必要だと書いています。
匿名メソッドで書いてもいいでしょうが、ラムダ式を用いる事で簡素化出来ます。
Action<T>については、下記記事を参考にしてください。
【C#】デリゲートを標準ライブラリで置き換える | 育児パパの人生備忘録 (t19488sns.com)
ラムダ式の書き方については、下記記事を参考にしてください。
【C#】ラムダ式の使い方(書き方) | 育児パパの人生備忘録 (t19488sns.com)
今回の場合は、ラムダ式で書く場合、《 左辺:引数 => 右辺:式 》という事から、こうなります。
左辺(引数):int型の名前 i ※名前なので任意 右辺(式) :iをコンソールに出力(Console.WriteLine(i))
図で書くとこんな感じですかね。。。
まとめ
Listクラス内に準備されている関数を使用する事で、わざわざforeach文を使わずに処理する事が出来ました。
Pythonではもう少し直感的に書くことが出来ますが、それに近い形で記述できています。
Listクラスを使いこなすことで、他にもたくさんの処理を簡潔に書くことが出来そうです。
実は自分も初めて知った事ですw
知らなくても実現するソースコードを書くことが出来るのは事実であり、知っている人はもっとソースコードを減らす事が出来ます。
少しずつですが、ラムダ式が分かってきたような気がします。
業務でプログラミング(C#/VB/Python)を作っている。
挫折を何回も繰り返し、幾度の壁を乗り越えてきた。
乗り越えてきた事を忘れないように記録に残す。
同じ思いをしている人への情報提供になれたらと思う。
基本は初心者に向けたプログラムの情報を提供する。
コメント
なぜ List.ForEach は使うべきでないか
https://qiita.com/chocolamint/items/d29d699ce27bcf685154
記事拝見しました。
たしかにそうですね。デメリットがある事も理解しないといけませんね。
ありがとうございます。