2012-01-07 13 views
10

私はこのLINQフィールドを初めて使用しています。ラムダ式で複数のステートメントを組み合わせるにはどうすればいいですか

私は私がラムダ式に変換する(下記書かれた)アクションデリゲートを持っています。

 Action<string> custom = delegate(string name) 
      { 
       lstCutomers.Add(new Customer(name, coutries[cnt])); 
       name = name + " Object Created"; 
      }; 

同じラムダ式は何ですか。私はラムダで複数のステートメントを書くことができますか?

ありがとうございます。

+0

はいあなたがチェックアウト – Peeyush

+0

単一のステートメントまたはステートメントのブロックを書くことができます:http://stackoverflow.com/questions/299703/delegate-keyword-vs-ただし声明ラムダを作成することができますラムダ表記法に関するデタッチされた議論のためのラムダ記法。 –

+0

'name'に値を戻すことは効果がないことに気づきました。したがって、2番目のステートメントは無関係で、ステートメント以外のラムダを使用できます。あなたが悪い例を与えたか、おそらくあなたのコードにバグがあります... –

答えて

18

あなたが何かを返すていないので、あなたは、ラムダ表現を作成することはできません。

Action<string> custom = (name) => 
     { 
      lstCutomers.Add(new Customer(name, coutries[cnt])); 
      name = name + " Object Created"; 
     }; 
+0

これは匿名の方法でしょう。 アクション customLambda = (name)=> lstCutomers.Add(new Customer(name、coutries [cnt]); name = name + "Object Created";); コンパイルしていないものがあります。 –

+0

'Expression'は常に値で終わるので、わかりません。私は '=>'がラムダ式になっていると考えました(これはカスタムのタイプのために匿名メソッドに変換されます)。 –

+1

@DJ:[MSDN](http://msdn.microsoft.com/en-us/library/bb397687.aspx)より「ラムダ式は式と文を含むことができる無名関数です」また、ステートメントラムダ。私の答えを更新しました。 –

関連する問題