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 サイトの他の関連記事を参照してください。

在C++中,使用Lambda表达式处理异常有两种方法:使用try-catch块捕获异常,并在catch块中处理或重新抛出异常。使用std::function类型的包装函数,其try_emplace方法可以捕获Lambda表达式中的异常。

在C++中,闭包是能够访问外部变量的lambda表达式。要创建闭包,请捕获lambda表达式中的外部变量。闭包提供可复用性、信息隐藏和延迟求值等优势。它们在事件处理程序等实际情况中很有用,其中即使外部变量被销毁,闭包仍然可以访问它们。

lambda表达式在C++多线程编程中的优势包括:简洁性、灵活性、易于传参和并行性。实战案例:使用lambda表达式创建多线程,在不同线程中打印线程ID,展示了该方法的简洁和易用性。

在C++中捕获外部变量的lambda表达式有三种方法:按值捕获:创建一个变量副本。按引用捕获:获得变量引用。同时按值和引用捕获:允许捕获多个变量,按值或按引用。

如何使用C++lambda表达式执行延迟求值?使用lambda表达式创建延迟求值的函数对象。延迟计算推迟到需要时才执行。仅当需要时才计算结果,提高性能。

优化C++Lambda表达式的性能技巧包括:避免创建不必要的lambda对象通过std::bind显式捕获最小的对象使用std::move移动捕获的变量以避免复制优化lambda体,避免不必要的内存分配、重复计算和全局变量访问

C++Lambda表达式与标准算法库紧密协作,允许创建匿名函数,简化对数据的处理。具体用途包括:排序向量:使用lambda表达式对元素进行排序。查找元素:使用lambda表达式在容器中查找特定元素。

回答:C++函数可以返回Lambda表达式,但存在以下限制:限制:Lambda表达式应捕获存储类型(CapturesbyValue)Lambda表达式不能返回局部变量Lambda表达式不能返回Lambda表达式


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
