‫わかりました｡
‫さて､ デリゲートの概要がわかったところで､ 実際にデリゲートを見てみましょう｡
‫そして､ それらをよりよく理解するために､ まずはC-sharpにすでに存在するデリゲートを使ってみましょう｡
‫そこで､ まず最初に､ nameという簡単な文字列のリストを定義しておきます｡
‫そして､ これを使うんです｡
‫例えば､ そこから名前を削除したいとします｡
‫このremove allメソッドによって､ 指定した述語で定義された条件にマッチする要素をすべて削除することができるんだ｡
‫そこで､ この緑色の述語のキーワードをご覧ください｡
‫基本的に通過できるのはこんな感じです｡
‫つまり､ これは基本的にここで私が期待するデリゲートです述語は期待するデリゲートの名前だけです｡
‫一度クリックすると､ こちらが表示されます｡
‫パブリックデリゲートプールの述語です｡
‫つまり､ ここでは､ 述語はRT､ つまり特定の型のオブジェクトを受け取るデリゲートであることがわかります｡
‫この場合､ RTはリスト要素の型である｡
‫つまり､ この場合は文字列で､ ブール値を返します｡
‫したがって､ remove allメソッドを呼び出すと､ この述語はリスト内のすべての名前に対して呼び出されることになります｡
‫ドキュメントを読めば､ この述語が返すboolが､ この要素がリストから削除されるかどうかを決定することがわかります｡
‫もしtrueを返したら､ その要素は削除される｡
‫そして､ このルールを書いて､ リストの中の名前の運命を決めるのは､ 私たちの仕事です｡
‫この中で､ AidanのフォルダーとAnatolyという名前があります｡
‫結局のところ､ remove allメソッドの背後にあるコードを書いた人々は､ 私たちが望むルールを決定するために私たちの心を読むことはできないのです｡
‫その通りです｡
‫そのため､ 述語デリゲートの定義にマッチした独自のメソッドを作成し､ remove
‫allメソッドに渡すことにします｡
‫例えば､ 「I」を含む名前をすべて取り除きたいので､ 次のようにフィルタリングメソッドを記述します｡
‫そこで､ 文字列を取り込む静的なプール・フィルタを作成するだけです｡
‫これがfilterというメソッドで､ 文字列にIという文字が含まれているかどうかを返しています｡
‫そして､ ここではcontainsメソッドを使って､ trueかfalseを返すbooleanを返しています｡
‫ここでは､ contains the Cは､ 文字列を受け取り､ それが含まれているかどうかをチェックし､ そしてブール値を返します｡
‫そこで､ ここでは実際にブール値を返しています｡
‫そして､ パラメータとして文字列を受け取ります｡
‫だから､ 基本的に私たちは戻ってきます｡
‫文字列に I が含まれていれば True となり､ remove all メソッドはリストのすべての要素に対してこのフィルターメソッドを実行します｡
‫では､ このフィルターメソッドを､ ここにある remove all
‫メソッドに渡してみましょう｡
‫そして､ remove allメソッドの前後にfor eachループを追加して､ 観察してみましょう｡
‫そこで､ この小さなコードをここに追加して､ 「以前はこうだった」と言うことにします｡
‫そこで､ ここにあるリストにあるすべての名前をコンソールに書き込みます｡
‫そして､ それをすべて取り除き､ あるフィルターに従って､ もう一度実行するのです｡
‫さて､ このフィルターを渡すのですが､ ほら､ ここではメソッドなのに括弧を使っていませんね｡
‫つまり､ 基本的にここではパラメータとしてメソッドを渡し､ 渡された文字列がAIを含んでいるかどうかをチェックしているのです｡
‫では､ どの名前にIが含まれるか､ 実行してみましょう｡
‫だから､ ウォルターとアナトリーのエージェントがいるんです｡
‫そしてその後､ Walterは目を含まない文字列なので､ Walter以外を削除しました｡
‫そして､ 基本的には既存のデリゲートをどのように使ってきたかです｡
‫そして､ 今度はデリゲートを必要とするメソッドを使用し､ それに渡すことができます｡
‫つまり､ 基本的にはこの文字列のリストに名前を付けるということです｡
‫全部外して､ ここで使ったフィルターで1つずつチェックするように言われました｡
‫そのため､ namesの値を次々とフィルターメソッドに渡し､ そのフィルターを通過させて､ 削除すべきかどうかを返しました｡
‫つまり､ このブール値は､ 渡された文字列の中にIが含まれていれば真となる｡
‫もしここでtrueを返したら､ filterメソッドはtrueを返し､ その結果remove
‫allが実行され､ 名前リストから名前が削除されます｡
‫なるほど､ これがデリゲートの一例だったんですね｡
‫そしてほら､ 私たちが欲しいものをここで具体的にパスしたわけではありません｡
‫つまり､ どの文字列を取りたいのか､ 例えば､ nameから始まってindexとか､ そういうことは言っていないんです｡
‫というのも､ remove allはデリゲートを想定しており､ そのデリゲートを渡しているからです｡
‫まだ少しわかりにくいかもしれませんが､ ご安心ください｡
‫これからいくつかの例を挙げますが､ これはデリゲートをより理解するのに役立つはずです｡
‫それでは､ 次のビデオでお会いしましょう｡