今回のテーマ
今回の記事では、List<T>クラスのラムダ式を引数に持っているメソッドをピックアップしてみます。
ピックアップするのは下記のメソッドです。
ラムダ式と組み合わせるメソッド一覧
- ForEach
- RemoveAll
- TrueForAll
ラムダ式を引数として扱うリストのメソッドは、今回の3つのメソッドと前回の記事のメソッドで全てなので、頑張って使い方を覚えていきましょう!
前回の記事はこちらです。
-
こちらもCHECK【C# sharp】ListクラスのExists、Find、FindAll、FindIndex、FindLast、FindLastIndexメソッドの使い方
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
ForEach
まずはForEachメソッドです。このメソッドは下記のようになっており、返り値がvoidとなっています。
1 |
public void ForEach(Action<T> action); |
引数はActionのため、返り値がないラムダ式となります。
なので、ForEachメソッドは下記のソースコードのように出力などで使用することがほとんどだと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); robotlist.ForEach(n => Console.WriteLine(n)); } } |
出力結果
Rockman
Rollchan
Fireman
Iceman
Airman
全ての要素が出力されていますね。
下記のようにLinqと組み合わせて使用すると便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); robotlist.Where(n => n.StartsWith("R")).ToList().ForEach(n => Console.WriteLine(n)); } } |
出力結果
Rockman
Rollchan
でも、個人的に下記のようにforeach文を使用して使う方が好きなので、私はあまり使用しませんね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); foreach(var robot in robotlist.Where(n => n.StartsWith("R")).ToList()) { Console.WriteLine(robot); } } } |
出力結果
Rockman
Rollchan
RemoveAll
続けて、RemoveAllです。要素を削除してくれるメソッドですね。
このメソッドは下記のようになっています。
1 |
public int RemoveAll(Predicate<T> match); |
戻り値がint型なんですよね!因みにこの戻り値は消した要素の数を表しています。
早速ソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); var removecount = robotlist.RemoveAll(n => n == "Fireman"); Console.WriteLine(removecount); foreach(var robot in robotlist) { Console.WriteLine(robot); } } } |
出力結果
1
Rockman
Rollchan
Iceman
Airman
ちゃんと「Rockman」がリストから削除されていますね。戻り値のint型の引数も1となっています。
複数個対象となる条件でも見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); var removecount = robotlist.RemoveAll(n => n.EndsWith("man")); Console.WriteLine(removecount); foreach(var robot in robotlist) { Console.WriteLine(robot); } } } |
出力結果
4
Rollchan
「man」がついてるロボット名が全て消えました!返り値も4ですね。この例を見て頂ければ、使い方が分かると思います。
RemoveAllは結構使いやすいので、覚えておいて損はないです。私はリスト関わらず、Allがついてるメソッドが大好きです。
今度、Allがついてるメソッド集という記事でも作ろうかな・・。
TrueForAll
最後にTrueForAllメソッドです。このメソッドは下記のようになっています。
1 |
public bool TrueForAll(Predicate<T> match); |
返り値はbool型ですね。引数はラムダ式のみです。
このメソッドは下記の2つのソースコードと出力結果をみれば分かると思います。
1つ目のソースコードと出力結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); Console.WriteLine(robotlist.TrueForAll(n => n.EndsWith("man"))); } } |
出力結果
False
2つ目のソースコードと出力結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { List<string> robotlist = new List<string>(); robotlist.Add("Rockman"); robotlist.Add("Rollchan"); robotlist.Add("Fireman"); robotlist.Add("Iceman"); robotlist.Add("Airman"); Console.WriteLine(robotlist.TrueForAll(n => n.EndsWith("n"))); } } |
出力結果
True
なんとなく分かりましたよね。
要素がラムダ式の条件に全て一致していれば「True」、1つでもしていない場合は「False」です。
あまり使う機会ないかもしれませんが、LinqのAllメソッドのように動作するんだなー。くらいで覚えておけばいいと思います。
LinqのAllメソッドについてはこちら
こちらもCHECK
-
【C# sharp Linq】Anyメソッド、Allメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
まとめ
今回はラムダ式と組み合わせることができるリストのメソッドを3つ紹介しました。
引数がラムダ式のメソッドはあまり使いたくないと思われがちですが、結構簡単で便利なので、
どんどん使ってください。この記事をみれば、使い方がすぐ分かるので、何回も復習しましょう。
最後まで読んで頂き有難うございました。
ラムダ式についてはこちら
配列、リストなどの記事はこちら
CHECK
-
【C# sharp】匿名メソッド、ラムダ式(=>)について解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 まえがき こ ...
続きを見る