1. ホーム
  2. c#

デリゲートを手動で作成する場合とAction/Funcデリゲートを使用する場合の比較

2023-11-14 19:20:34

質問

今日、私はこれを宣言しようと思っていました。

private delegate double ChangeListAction(string param1, int number);

が、なぜこれを使わないのか。

private Func<string, int, double> ChangeListAction;

または ChangeListAction は私が使うことのできる戻り値を持たないでしょう。

private Action<string,int> ChangeListAction;

でデリゲートを宣言することの利点は何でしょうか? delegate キーワードで宣言する利点は何でしょうか?

.NET 1.1から.NET 2.0になったからでしょうか。 Action<T> で、.NET 3.5 で Func<T> ?

どのように解決するのですか?

利点は明確さです。型に明示的な名前をつけることで、それが何をするものなのかが読者にとってより明確になります。

また、コードを書くときにも役に立ちます。このようなエラーは

cannot convert from Func<string, int, double> to Func<string, int, int, double>

というものは、あまり役に立ちません。

cannot convert from CreateListAction to UpdateListAction

また、2つの異なるデリゲートがあり、どちらも同じタイプのパラメータを取りますが、概念的には2つの全く異なることをします。