之间有什么区别
Thread t = new Thread (new ThreadStart (Go));
和
Thread t = new Thread (Go);
其中Go是一种方法
答案 0 :(得分:7)
唯一不同的是,Go
是一个可以匹配多个Thread
构造函数重载的方法组 - 例如,因为ThreadStart
和ParameterizedThreadStart
都有一个构造函数new Thread(Go)
,以下方法会使static void Go() { }
static void Go(object val) { }
版本模糊不清:
new Thread (new ThreadStart (Go))
{{1}}通过明确声明委托类型消除歧义,但:除了它们之外,它们在C#2或更高版本上是相同的。注意:在C#2之前,较短的版本不是合法的语法。
答案 1 :(得分:4)
无。他们是一回事。
documentation说明了这一点:
创建线程时,Visual Basic和C#用户可以省略
ThreadStart
或ParameterizedThreadStart
委托构造函数。 [...]在C#中,只需指定线程过程的名称即可。编译器选择正确的委托构造函数。
答案 2 :(得分:0)
第二个是快捷方式!基本上,做同样的事情。但是,在对象threadstart中,有一组参数可以通知。
答案 3 :(得分:0)
没有,我是gess。 Thread
的构造函数采用类型为ThreadStart
的{{1}}“构造”。
delegate
// constructor of Thread
public Thread(ThreadStart start);
定义为:
ThreadStart
由于每个方法都可以用作委托,因此您可以直接将您的方法传递给构造函数。通过明确写作..
namespace System.Threading
{
// Summary:
// Represents the method that executes on a System.Threading.Thread.
[ComVisible(true)]
public delegate void ThreadStart();
}
..你只需再把它包起来。