2

式の変換方法

v => names.Add(v); // Consider names as List<string> and v as string 

C#2.0に?

4

2 に答える 2

8

代わりに匿名メソッドを使用できます。

Action<String> action = delegate (string v) { names.add(v); };

これは、既存のラムダ式がデリゲートに変換されている場合に機能します。既存のラムダ式が式ツリーに変換されているときは機能しません。

(しかし、本当にC# 2 を使用する必要がありますか? ええ。C# 3 以降を使用できますが、それが実際の要件である場合は、.NET 2 をターゲットにすることを忘れないでください。C# 3 以降を使用することによる生産性の利点は、実際にVisual Studio のバージョンをアップグレードすると機能します...)

于 2012-12-29T10:01:38.430 に答える
1

ラムダ矢印が変更されていないパラメータ リストを使用して既存のメソッドを実際に呼び出すこの特定の例では、「メソッド グループ」を使用することもできます。

そう

v => names.Add(v)

だけで置き換えることができます

names.Add    /*  OK in C# 2.0, method group conversion  */

ただし、ラムダが既存の名前付きメソッドと同等ではない一般的なケースでは、他の回答が示唆するように匿名メソッドを使用します。

delegate (string v) { names.Add(v); }

これらの式はすべてAction<string>、 が 1 つのstringパラメーター (値パラメーター) を持ち、 を返すように、デリゲート型に割り当てることができますvoid

于 2012-12-29T10:25:22.083 に答える