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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS