2011-08-16 3 views
3

私はC#とMVC3を学ぼうとしています。私はこれをしたまでしかし、それは動作しません、Html.ActionリンクとしてWebGridの列を持っていると思った:"(item)=>"は何をしますか?

grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.Id })) 

だから私は、これはそれを修正することを知っているが、なぜですか? (アイテム)はキャストのように見えますが、=>は何ですか?他の質問を読むことから何らかの理由でこれを行うことが明らかに悪いことがわかります - なぜですか?

+2

ビット明確にそれがすべてでラムダを使用することが悪いわけではないかもしれわずか展開された形です。 – driis

+0

これを行うことは悪くないです。 – recursive

+0

ありがとうございます。 [this](http://stackoverflow.com/questions/6167903/using-data-in-a-html-actionlink-inside-a-webgrid-column-not-possible)の質問に対する回答は私に心配していたものです。 – BenGC

答えて

8

これは、C#のラムダ式/無名関数として知られています。 ()部分は引数リストであり、=>は右辺がラムダのボディ/式であることを示します。

はここ

Func<ItemType, string> linkFunction = (item) => 
{ 
    return Html.ActionLink("Edit", "Edit", new { id = item.Id }); 
}; 
+0

私はあなたが "/匿名機能"を削除することができると思います。ちょうどラムダ式が正しいと思います。 –

+0

@ justin.m.chase無名関数は、ラムダ式と匿名メソッドの両方をカバーするのでより包括的です – JaredPar

7

これはlambda expressionとなります。そして、いいえ、ラムダを使って悪くはない、それは(非常に)良いことです。

+0

@Andrew、なぜ熱心な編集? – RichK

+0

@ RichK:私は答えをアップビンしましたが、 "MSDN is your friend"を削除しました。 –

+0

ああ、私は元の編集でClausの余分な文章をそこから抜いてしまったようだ。申し訳ありません: –

関連する問題