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

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

Mar 09, 2017 pm 03:32 PM

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ラムダ式は C++ の例外をどのように処理しますか? ラムダ式は C++ の例外をどのように処理しますか? Apr 17, 2024 pm 12:42 PM

C++ では、Lambda 式を使用して例外を処理する方法が 2 つあります。try-catch ブロックを使用して例外をキャッチする方法と、catch ブロックで例外を処理または再スローする方法です。 std::function 型のラッパー関数を使用すると、その try_emplace メソッドで Lambda 式の例外をキャッチできます。

C++ ラムダ式におけるクロージャの意味は何ですか? C++ ラムダ式におけるクロージャの意味は何ですか? Apr 17, 2024 pm 06:15 PM

C++ では、クロージャは外部変数にアクセスできるラムダ式です。クロージャを作成するには、ラムダ式の外部変数をキャプチャします。クロージャには、再利用性、情報の隠蔽、評価の遅延などの利点があります。これらは、イベント ハンドラーなど、外部変数が破棄されてもクロージャが外部変数にアクセスできる現実の状況で役立ちます。

マルチスレッド プログラミングに C++ ラムダ式を使用する利点は何ですか? マルチスレッド プログラミングに C++ ラムダ式を使用する利点は何ですか? Apr 17, 2024 pm 05:24 PM

C++ マルチスレッド プログラミングにおけるラムダ式の利点には、シンプルさ、柔軟性、パラメータの受け渡しの容易さ、並列処理が含まれます。実際のケース: ラムダ式を使用してマルチスレッドを作成し、異なるスレッドでスレッド ID を出力します。これは、このメソッドのシンプルさと使いやすさを示しています。

C++ラムダ式でクロージャを実装するにはどうすればよいですか? C++ラムダ式でクロージャを実装するにはどうすればよいですか? Jun 01, 2024 pm 05:50 PM

C++ ラムダ式は、関数スコープ変数を保存し、関数からアクセスできるようにするクロージャーをサポートしています。構文は [キャプチャリスト](パラメータ)->戻り値の型{関数本体} です。 Capture-list は、キャプチャする変数を定義します。[=] を使用してすべてのローカル変数を値によってキャプチャするか、[&] を使用してすべてのローカル変数を参照によってキャプチャするか、[variable1, variable2,...] を使用して特定の変数をキャプチャできます。ラムダ式はキャプチャされた変数にのみアクセスできますが、元の値を変更することはできません。

C++ ラムダ式はどのようにして外部変数をキャプチャするのでしょうか? C++ ラムダ式はどのようにして外部変数をキャプチャするのでしょうか? Apr 17, 2024 pm 04:39 PM

C++ で外部変数のラムダ式をキャプチャするには、次の 3 つの方法があります。 値によるキャプチャ: 変数のコピーを作成します。参照によるキャプチャ: 変数参照を取得します。値と参照による同時キャプチャ: 値または参照による複数の変数のキャプチャを許可します。

C++ 関数呼び出しのラムダ式: パラメーターの受け渡しと戻り値のコールバックの最適化 C++ 関数呼び出しのラムダ式: パラメーターの受け渡しと戻り値のコールバックの最適化 May 03, 2024 pm 12:12 PM

C++ では、ラムダ式を関数パラメータとして使用して、コールバック関数の柔軟性を実現できます。具体的には: パラメーターの受け渡し: std::function を介して Lambda 式をラップし、関数ポインターの形式で関数に渡します。戻り値の処理: std::functionでコールバック関数のポインタを宣言する際の戻り値の型を指定します。実践的なケース: GUI イベント処理のコールバックを最適化し、不要なオブジェクトや関数ポインターの作成を回避し、コードの単純さと保守性を向上させます。

C++ ラムダ式を使用して遅延評価を実行するにはどうすればよいですか? C++ ラムダ式を使用して遅延評価を実行するにはどうすればよいですか? Apr 17, 2024 pm 12:36 PM

C++ ラムダ式を使用して遅延評価を実行するにはどうすればよいですか?ラムダ式を使用して、遅延評価される関数オブジェクトを作成します。遅延計算により、必要になるまで実行が延期されます。必要な場合にのみ結果を計算し、パフォーマンスを向上させます。

C++ ラムダ式のパフォーマンスを最適化するためのテクニックは何ですか? C++ ラムダ式のパフォーマンスを最適化するためのテクニックは何ですか? Apr 17, 2024 pm 05:45 PM

C++ ラムダ式を最適化するためのパフォーマンスのヒントは次のとおりです。 ラムダ オブジェクトの不必要な作成を回避する std::bind を介して最小のオブジェクトを明示的にキャプチャする コピーを避けるために std::move を使用してキャプチャされた変数を移動する 不必要なメモリ割り当て、計算の繰り返しを回避するためにラムダ本体を最適化するグローバル変数へのアクセス

See all articles