ホームページ >バックエンド開発 >C#.Net チュートリアル >C# デリゲート、匿名メソッド、Lambda、汎用デリゲート、式ツリーのコード例を確認します。

C# デリゲート、匿名メソッド、Lambda、汎用デリゲート、式ツリーのコード例を確認します。

黄舟
黄舟オリジナル
2017-03-09 15:32:181987ブラウズ

C# デリゲート、匿名メソッド、Lambda、汎用デリゲート、式ツリーのコード例を確認してください:

これらは古い世代のプログラマーにとっての決まり文句であり、新しいものではありませんが、新世代のプログラマーにとっては内容が満載です。魅力的です。これまで、新世代の多くは、委任や式ツリーなどのアプリケーションを習得するために、長い学習、理解、実践のプロセスを経る必要がありました。今日は、このブログを誰でも 5 分で読めるように、簡単に説明しようと思います。

最初の 1 分: 代表団

一部の教科書やブログでは、委任について説明するときにイベントについて言及しますが、理解しやすくするために、今日はイベントではなく委任についてのみ説明します。最初のコード:

以下のコードは、委任されたアプリケーションのデモを完成させます。コミッションは 3 つのステップで構成されます:

りー

Step01: まず、デリゲートを使用してデリゲートを定義します。

Step02: デリゲートに対応するメソッドを宣言します。

Step03: このメソッドを使用して、このデリゲートをインスタンス化します。

この時点で、デリゲートが完了しているはずなので、そのデリゲートを呼び出すことができます。

2分目: 匿名メソッド

最後にすでにご存知のとおり、依頼されたアプリケーションを完了するには 3 つのステップがあります。大きな一歩を踏み出したい場合は、一歩を踏み出さないと失敗してしまうので注意してください。卵を傷つけます。しかし、Microsoft は糸を引くことを恐れず、3 つのステップを 2 つのステップに変えることを主張しています。したがって、Microsoft は匿名の方法を使用して、上記の 3 つの手順を簡素化しています。匿名メソッドについてはどう思いますか? 匿名メソッドは C# ではまったく必要ありません。それらは C# の飾りにすぎません。

りー

Step01: まず、デリゲートを使用してデリゲートを定義します。

Step02: この書き込みメソッド delegate(int x, int y) { return x + y; } を使用して、デリゲートにメソッドを割り当てます。

このとき、これは二歩の三歩ではないことに驚くでしょう?

3分目:ラムダ式

もともと単純なプログラムにいくつかのデリゲート キーワードを追加すると、コードが急に奥深くなり、奥深いことを理解する人が少なくなるため、給与アップの交渉材料としても使用できます。しかし、Microsoft の C# の設計哲学は、シンプルさと使いやすさです。 Microsoft は匿名メソッド delegate(int x, int y) { return x + y } を簡素化するためにあらゆる手段を試み、Lambda が登場しました。ラムダ式を記述するいくつかの方法を見てみましょう:

りー

方法 1: デリゲートを削除し、() と {} の間に「=>」を追加します。

方法 2: 方法 1 に基づいて、すべてのパラメータの種類が削除されます。

方法 3: やりたい場合は、より徹底的に実行し、{} と return キーワードを削除します。

これらの書き方はどれでも構いませんが、初心者にとっては迷惑なだけです。指導してくれる人がいないと、この書き方を目にすることもあります。本当に混乱するし、難しいのです。

4 分: 一般的な委任

.net バージョンはアップグレードされていないため、新しいバージョンは古いバージョンとは異なる必要があります。そうでない場合、Microsoft エンジニアは上司にどうやって報告すればよいでしょうか。そこでマイクロソフトは再び何か新しいことを計画している。

りー

匿名メソッドであってもラムダ式であっても、デリゲートの適用を完了するには 2 つの手順があります。1 つはデリゲートを定義することで、もう 1 つはメソッドを使用してデリゲートをインスタンス化することです。 Microsoft はこれら 2 つのステップを 1 つのステップに単純に結合しました。 Func を使用してデリゲートの定義を簡素化します。

この時点で、デリゲートの適用は Func cAdd3 = (x, y) => x + y; で完了できます。

5分目: 式ツリー

実際、式ツリーは委任とは何の関係もありません。関連する必要がある場合は、式ツリーが委任を保存するためのコンテナであるとだけ言っておきましょう。より専門的な話をしなければならない場合、式ツリーはラムダ式にアクセスするためのデータ構造です。 Lambda 式を使用する場合は、式から直接取得し、Compile() を直接使用します。次のコード:

public partial class WebForm3 : System.Web.UI.Page
{
    //step01:首先用delegate定义一个委托 。
    public delegate int CalculatorAdd(int x, int y);

    protected void Page_Load(object sender, EventArgs e)
    {
        //step03:用这个方法来实例化这个委托。
        CalculatorAdd cAdd = new CalculatorAdd(Add);
        //int result = cAdd(5, 6);
        int result = cAdd.Invoke(5,6);
    }
    // step02:声明一个方法来对应委托。
    public int Add(int x, int y)
    {
        return x + y;
    }
}

私が触れたことは非常に表面的なものでしたが、少なくとも、委任、匿名メソッド、Lambda、汎用委任、式ツリーに関する別の記事を誰もがレビューできるようになりました。


以上がC# デリゲート、匿名メソッド、Lambda、汎用デリゲート、式ツリーのコード例を確認します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。