実際の例とその使用法について、どなたか私に理解を助けていただけませんか。
- いつ必要になるのか
Func<T, ..>
委任しますか? - いつ必要になるのか
Action<T>
委任しますか? - いつ必要になるのか
Predicate<T>
委任しますか?
ベストアンサー1
Func
との違いは、Action
デリゲートが値を返すようにするか ( を使用Func
)、返さないか ( を使用Action
) という点だけです。
Func
おそらくLINQで最も一般的に使用されるのは、たとえば投影です。
list.Select(x => x.SomeProperty)
またはフィルタリング:
list.Where(x => x.SomeValue == someOtherValue)
またはキー選択:
list.Join(otherList, x => x.FirstKey, y => y.SecondKey, ...)
Action
List<T>.ForEach
は、リスト内の各項目に対して指定されたアクションを実行するなどの場合によく使用されます。 よりも使用頻度は低いですFunc
が、やなどの場合にパラメータなしのバージョンを使用することがあります。Control.BeginInvoke
Dispatcher.BeginInvoke
Predicate
は、実際には特別なケースでありFunc<T, bool>
、すべてのFunc
およびほとんどのAction
デリゲートが登場する前に導入されました。 および がさまざまな形ですでに存在していた場合、 はFunc
導入されなかったのではないかと思います...ただし、 はデリゲートの使用に特定の意味を与えますが、およびは大きく異なる目的で使用されます。Action
Predicate
Func
Action
Predicate
は主にやList<T>
などのメソッドで使用されます。FindAll
RemoveAll