2014-09-30 74 views
0

之间的区别是什么主题是什么

Thread t = new Thread (new ThreadStart (Go)); 

Thread t = new Thread (Go); 

去哪儿是一个方法

回答

0

没有,我是。 Thread的构造函数采用类型为delegateThreadStart“构造”。

// 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(); 
} 

由于每个方法可用于作为代理可以直接传递到您的构造。通过明确书写..

new Thread(new ThreadStart(Go)) 

..你简单地把它包起来。

4

无之间的差异。他们是一样的东西。

documentation美国这样的:

Visual Basic和C#用户可以创建一个线程时省略了ThreadStartParameterizedThreadStart委托构造函数。 [...]在C#中,只需指定线程过程的名称即可。编译器选择正确的委托构造函数。

0

第二个是一个捷径!基本上,做同样的事情。但是,在对象threadstart内部有一组可以通知的参数。

6

是有差别的唯一情况是,如果Go是一个可以匹配多个Thread构造函数重载的方法 - 组 - 例如,因为有两个ThreadStartParameterizedThreadStart构造,下面的方法将使new Thread(Go)版本暧昧:

static void Go() { } 
static void Go(object val) { } 

new Thread (new ThreadStart (Go))消歧,通过显式地声明了委托类型,但:比它们是相同的其他,对C#2或以上。注意:在C#2之前,较短的版本不是合法的语法。