c#线程声明
我看到以下声明:
ThreadStart myThreadDelegate = new ThreadStart(Work.DoWork); Thread myThread = new Thread(myThreadDelegate); myThread.Start(); 他们可以简化如下吗? Thread myThread = new Thread(new ThreadStart(Work.DoWork)); myThread.Start(); 如果是,那么第二种方法是什么?每种方法的优缺点是什么? 解决方法
它甚至可以简化为:
var myThread = new Thread(Work.DoWork); myThread.Start(); 没有太大的区别.在您的第一个示例中,委托实例获取一个名称myThreadDelegate,理论上可以在该方法中稍后使用(可能是其他内容). 如果一个人喜欢一个含有多个级别的长表达式,或者许多带有temporaray变量的小表达式然后被组合,那么这主要是一个品味问题. 在任何情况下,在我看来,使用方法组的隐式转换比在Work.DoWork中更简单,而不是编写新的ThreadStart(Work.DoWork).看到句子C#2.0提供了一种更简单的方法来编写How to: Declare,Instantiate,and Use a Delegate (C# Programming Guide)中的前一个声明.这种更简单的方法正式称为方法组转换. 有关var关键字的信息,请参阅Implicitly Typed Local Variables (C# Programming Guide). 当然,你的例子中的终极单行将是: (new Thread(Work.DoWork)).Start(); 在这种情况下,您甚至不会获得对新线程的引用(变量)(实例方法Start()返回void). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |