加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#线程声明

发布时间:2020-12-16 00:22:05 所属栏目:百科 来源:网络整理
导读:我看到以下声明: ThreadStart myThreadDelegate = new ThreadStart(Work.DoWork);Thread myThread = new Thread(myThreadDelegate);myThread.Start(); 他们可以简化如下吗? Thread myThread = new Thread(new ThreadStart(Work.DoWork));myThread.Start();
我看到以下声明:

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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读