下面的代码中ThreadStart
委托传递给Thread
构造函数的区别是什么:
class Program
{
public static void ThreadMethod()
{
//...
}
static void Main(string[] args)
{
Thread t = new Thread(ThreadMethod);
Thread t = new Thread(new ThreadStart(ThreadMethod));
t.Start();
}
}
在两种情况下,程序均以相同的方式工作。为什么我应该创建新的委托对象并调用ThreadMethod
委托构造函数?
答案 0 :(得分:1)
它是纯语法糖,没有区别。编译器知道预期的委托类型并自动创建。
在这里您自己创建委托:
Thread t = new Thread(new ThreadStart(ThreadMethod));
在此示例中,编译器自动创建它:
// The type of delegate is inferred by compiler and delegate is created
Thread t = new Thread(ThreadMethod);
答案 1 :(得分:0)
没有区别。在第一种情况下,编译器将为您静默创建委托,并传递您的ThreadMethod
:
Thread t = new Thread(ThreadMethod);
将变为:
Thread t = new Thread(new ThreadStart(ThreadMethod));