通过调用委托构造函数创建委托

时间:2019-01-22 09:39:13

标签: c#

下面的代码中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委托构造函数?

2 个答案:

答案 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));