C# の Action と Func の簡単な紹介と使用法

  以前はデリゲートを定義してデリゲートを書いていましたが、最近外国人が書いたソースコードがactionとfuncの形で書かれているのを見て、時間をかけてこの2つの方法を学んでみると、確かにコードははるかに簡単であることがわかりました。 。これら 2 つの方法は、練習の過程でゆっくりと使用することもできます。

まずコミッションについて話させてください

シーンをシミュレーションしてみましょう。Xiao Ming は最近学習意欲が高く、以前に購入した本では欲求を満たせないため、本を購入する予定です (プログラマーの自己修養)。でも昔はいつも本の工場に買いに行ってたんだけど、あまり遠くまで持っていけないから近くの本屋に買いに行って、シャオミンがお金を渡しに行って本を返してもらったんです、これ処理は委託されます。分析を開始する

1: Xiaoming はプログラマーの自己啓発に関する本を購入したいと考えています (xx 本は購入されません) 必須要件 (これは委託の性質を定義するものです)

コード:

 プライベートデリゲート void BuyBook();

2:お近くの書店(お任せ方法)

コード:

public static void Book()
{ Console.WriteLine("私は本を提供します"); }

3:Xiaomingが書店と関係を築く(委託への拘束方法) 

コード:

  BuyBook buybook = 新しい BuyBook(Book);

4:シャオミンが本を買うためにお金を渡す(トリガー)

本を買う();

ここまではデリゲートの使い方を理解する内容でしたが、次にActionとFuncについて説明していきます。

アクションの使用法

1: シャオミンはとても悩んでいます。本を買ったばかりなのに、毎回それを定義するように頼まれました。とてもイライラしています。委託を定義しない方法はありますか?方法はありますか?それは本当にあります。それはアクションです今日のことを話しました。

Action BookAction = new Action(Book);
            BookAction();

これはもっと簡単ですか?

2: Xiao Ming は今不満です。「プログラマーの自己修養」を読み終えましたが、別の本を購入したいのですが、どうすればよいですか? コミッションをもう一度再定義しますか? 実際、パラメータを渡すだけでよいわけではありません。Action<T> の使用法を見てみましょう。

  static void Main(string[] args)
        {
            Action<string> BookAction = new Action<string>(Book);
            BookAction("百年孤独");
        }
        public static void Book(string BookName)
        {
            Console.WriteLine("我是买书的是:{0}",BookName);
        }

3: 今、シャオミンはまた考えを変えました。自分で本を選ぶだけでなく、素晴らしい書籍メーカーから購入したいのです。そのような方法はありますか? 教えてください、アクション<in T1 、T2で>

static void Main(string[] args)
        {
            Action<string,string> BookAction = new Action<string,string>(Book);
            BookAction("百年孤独","北京大书店");
        }
        public static void Book(string BookName,string ChangJia)
        {
            Console.WriteLine("我是买书的是:{0}来自{1}",BookName,ChangJia);
        }

 関数の使用法

Xiao Ming さんにまた質問があります。いつも本屋に本を取りに行くのですが、家に直接届ける方法はありますか? そこで、Func が特別にそのようなサービスを提供しています。

関数の説明 パラメータを持つ場合も持たないメソッド (パラメータがない場合もあります) をカプセル化しますが、TResult パラメータで指定された型の値を返します。

1: まず、パラメーターを持たず、値のみを返すメソッドを見てみましょう

static void Main(string[] args)
        {
            Func<string> RetBook = new Func<string>(FuncBook);
            Console.WriteLine(RetBook);
        }
        public static string FuncBook()
        {
            return "送书来了";
        }

2: パラメータと戻り値を持つメソッド

static void Main(string[] args)
{
Func<string,string> RetBook = new Func<string,string>(FuncBook);
Console.WriteLine(RetBook("aaa"));
}
public static string FuncBook(string BookName)
{
return BookName;
}

3: Func の非常に重要な用途は、値を渡すことです。説明するために簡単なコードを示します。

  Func<string> funcValue = delegate
            {
                return "我是即将传递的值3";
            };
            DisPlayValue(funcValue);

注 1: DisplayVauue は受信した値を処理するもので、キャッシュ処理やデータベースの均一追加などのメタファーです。

 private static void DisPlayValue(Func<string> func)
        {
            string RetFunc = func();
            Console.WriteLine("我在测试一下传过来值:{0}",RetFunc);
        }

要約する

1: 戻り値のないメソッドにアクションを使用します(状況に応じてパラメータを渡すことができます)

2: Func は戻り値を持つメソッドの場合はその逆です (同じパラメータは独自の状況に基づいています)

3: リターンがない場合は action を使用し、リターンがある場合は Func を使用することを忘れないでください。

転載: https://www.cnblogs.com/LipeiNet/p/4694225.html

おすすめ

転載: blog.csdn.net/weixin_42565127/article/details/130947237