多线程,new Thread(t1);和new Thread(new ThreadStart(t1));有什么区别
没有区别。
前者,是c#的语法。也就是说是编译器帮你改写为第二种形式。
因此你要搞清楚,这是.net的特性还是c#的特性。这是c#得特性,如果有人以为第一种写法“是.net的”那他就错了。
.net中根本不支持 new Thread(t1); 这种代码,这是c#编译器支持的。类似的东西也有很多。所以说c#比较优雅,是指这个部分。
要分清楚“什么是c#的,什么是.net的”,你能更好地理解c#,也能更好地理解.net。
在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用C#
Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。
你要搞清楚ThreadStart是一个委托。虽然它叫Thread,但是它其实是一个普普通通的委托类型。
就好比
button.Click += button1_Click;
和
button1.Click += new EventHandler(button1_Click);