以下に示すようにコードを記述した場合、以下に示すように Method2 をスレッドに渡すにはどうすればよいですか? エラーが表示されます エラー
'System.Threading.Thread.Thread(System.Threading.ThreadStart)' に最も一致するオーバーロードされたメソッドには、無効な引数が含まれています
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main Thread : ");
Thread obj = new Thread(Method2);
obj.Start();
Console.ReadLine();
}
private static int Method2(int a)
{
return a;
}
}
次のコードを使用すると動作します
Thread obj = new Thread(() => Method2(1));
しかし、デリゲートオブジェクトを渡すと機能しないのはなぜですか
delegate int del(int i);
del d = Method2;
Thread obj = new Thread(d);
上記の 2 の違いは何ですか。最初のケースでは、デリゲート オブジェクトを直接渡した 2 番目のケースでラムダ式を使用しました。他に何かありますか?