ふらっと C#,C♯,C#(初心者用) Part118 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0725デフォルトの名無しさん
2016/01/16(土) 09:55:07.12ID:iwKS8iBRコレクションの中から条件に一致する最初の探して、っていう
Enumerable.First<T>(IEnumerable<T>, Func<T, bool>)
がある
まあざっと実装するなら
foreach (var item in collection) if (ISMATCH(item)) return item;
って感じのメソッドになるよね
でFirstメソッドはこのISMATCHっていう条件関数以外は実装してくれてて、
あとはISMATCHに該当するのだけくれればあとはやっとくよ、という状態
で、そのISMATCHを渡すためにデリゲートを使う
public bool IsMatching(Person p) { return p.Name == "hoge"; }
っていうメソッドが存在していれば、あとは
persons.First(new Func<Person, bool>(IsMatching))
と言う記述でFirstにIsMatchingを渡すことができる
// 実際には省略してpersons.First(IsMatching)とか書く
// さらにいちいち"hoge"しか探せないメソッド用意するのは馬鹿馬鹿しいので
// ラムダ式を使ってpersons.First(_person => _person.Name == "hoge")とか書く
■ このスレッドは過去ログ倉庫に格納されています