web-dev-qa-db-ja.com

()の意味=> C#の演算子(存在する場合)

Jon Skeetの回答で、この興味深い行 here を読みました。

興味深いのはこれで、彼はデリゲートを使用することを提唱しました:

Log.Info("I did something: {0}", () => action.GenerateDescription());

質問ですが、これは()=>演算子とは何でしょうか?私はそれをグーグルで試しましたが、それはシンボルでできているので、グーグルは実際にはあまり役に立ちませんでした。恥ずかしいことにここで何かを見逃しましたか?

39
Orca

これにより、パラメーターのないラムダ関数(匿名デリゲート)が導入されます。これは、以下と同等で基本的には省略形です。

delegate void () { return action.GenerateDescription(); }

パラメータを追加することもできます。

(a, b) => a + b

これはおおよそ次と同等です。

delegate int (int a, int b) { return a + b; }
55
Simon Steele

=>これはラムダ演算子です。入力パラメーターがない場合は、ラムダ演算子の前に角かっこ()を使用します。

構文:(input parameters) => expression

8
htr

これは、詳細を学習できるラムダ式の例です here

3
Jake Pearson

指定されたメソッドに匿名デリゲートを作成します。

おそらく、あなたの場合はFunc<string>

2
abatishchev

ラムダ式としてパラメーターなしで匿名デリゲートを渡す方法です。

.NET 2.0のこれと同様

Log.Info("I did something: {0}", delegate()
            {
                return action.GenerateDescription();
            });
1
PiRX