C# デリゲート、匿名メソッド、Lambda、汎用デリゲート、式ツリーのコード例を確認します。
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
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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