私はこのコードを以下に持っています。
delegate void TestDel(string str);
static void Main(string[] args)
{
TestDel td = name=> Console.WriteLine(name);
TestDel td = (string name) { Console.WriteLine(name);}
td("hello");
Console.ReadLine();
}
ここにデリゲートTestDelがあります。これは、うまくいくラムダ式を使用して最初に作成されます。しかし、私が匿名のメソッドを使用している2番目のメソッドはコンパイルされませんが、以下のようにすると:
TestDel td = delegate(string name) { Console.WriteLine(name);};
それならすべてがうまくいきます、私の混乱は、なぜそれらが同じであるのに匿名メソッドではなくラムダ式を使用できるのか、なぜラムダ式ではなく匿名メソッドでデリゲートを配置する必要があるのですか?