Open棟梁Project - マイクロソフト系技術情報 Wiki * 目次 [#v9445796] #contents *概要 [#g9d0b931] ラムダ式っておじさんには一瞬なんだかよく解りませんが、~ おじさんの知識で振り返って分析してみると、~ 中水準言語のC言語の関数ポインタから、 高水準言語の.NET言語(C#、VB)で、~ -デリゲート -匿名関数 -ラムダ式 と進化してきていることぐらいは解ると思います。 これを見ると、 -デリゲート~ラムダ式の歴史を辿って | もりひろゆきの日々是勉強~ http://moriblog.kit-eng.com/?p=975 厳密には、 -デリゲート(C# 1.0) -デリゲート(C# 2.0)~ デリゲートの代入時にインスタンス生成(new デリゲート名)を省略できる。 -匿名メソッド・匿名関数(C# 2.0)~ delegate構文を用いて「メソッド名を持たない処理」を記述できる。 -定義済みデリゲート型(共通デリゲート型)(C# 3.0/.NET Framework 3.5)~ ジェネリックの機能を用いて、3種類のデリゲートが定義され、~ 「delegateキーワードを使ったデリゲート宣言」を省略できる。 --戻り値のない定義済みデリゲートのAction~ 最新の.NET 4.5では引数の数が最大16まであるデリゲートが定義されている。 --戻り値を持つ定義済みデリゲートのFunc~ 最新の.NET 4.5では引数の数が最大16まであるデリゲートが定義されている。 --論理型のも戻り値を持つ定義済みデリゲートのPredicate -ラムダ式(C# 3.0)~ --デリゲート型/式ツリー(ExpressionTree)を作成するために使用できる匿名関数 --ラムダ演算子(=>) を用いて左辺にパラメタ、右辺に式やコードブロックを置く というふうに進化してきています。 ラムダ式は、LinQなど新しいAPIの使い勝手を良くするために生まれてきたようです。 -C#ラムダ式 基礎文法最速マスター - @IT~ http://www.atmarkit.co.jp/fdotnet/rapidmaster/rapidmaster_01/rapidmaster_01.html >C#言語のラムダ式(lambda expressions)とは、~ デリゲート(delegate)や、メソッド・ベースのLINQ文の(例えば)~ WhereメソッドやSelectメソッドなどの引数をシンプルに記述するために、~ C# 3.0(=Visual C# 2008)以降で導入された言語仕様である。 *利用例 [#mea2384e] ということで、引数をラムダ式にすることで、~ 以下の効果が期待できるようなケースが代表的な利用シーンと思います。 -delegateを必要とするメソッドを実行しやすくする。 --[C#][ラムダ式][LINQ][式木] 匿名メソッドとラムダ式の違い~ (プログラミング C# - 翔ソフトウェア (Sho's))~ http://blog.shos.info/archives/2012/11/clinqexpression.html >ラムダ式を使った方が、型推論の恩恵を存分に受けられ、書き方がぐっとシンプルになる。 -任意の変数の編集結果を関数に渡すことができる。 --ASP.NET MVC で WebGrid を最大限に活用する - MSDN~ https://msdn.microsoft.com/ja-jp/magazine/hh288075.aspx >新しい WebGrid<T> 実装では、format パラメーターに~ Func<T, object> を受け取る新しい Column メソッドを追加しています。~ grid.Column( columnName: "EmailAddress", header: "Email Address", format: item => Html.EmailLink( (string)item.EmailAddress, (string)item.EmailAddress, "" ), canSort: false ) おじさんでもラムダ式なんて簡単に理解できます。 おじさんをなめるなよ。 *参考 [#h35da447] -C#&VB ラムダ式 基礎文法★チートシート - @IT~ http://www.atmarkit.co.jp/fdotnet/chushin/cheatsheet_01/cheatsheet_01_01.html --C#ラムダ式 基礎文法最速マスター - @IT~ http://www.atmarkit.co.jp/fdotnet/rapidmaster/rapidmaster_01/rapidmaster_01.html --VBラムダ式 基礎文法最速マスター - @IT~ http://www.atmarkit.co.jp/fdotnet/rapidmaster/rapidmaster_02/rapidmaster_02.html