什么是(以及我为什么需要)=>在c#中创建任务时

时间:2013-05-24 23:36:15

标签: c# vb.net syntax task

很抱歉,如果这很明显。我正试图从VB.NET跳转到C#,我正在玩任务。在VB.NET中,我可以像这样定义一个任务:

    Dim t As New Task(Sub()
                          Threading.Thread.Sleep(1000)
                      End Sub)

任务之后的部分对我有意义,我正在创建一种新方法。

在C#中它看起来像:

        Task t = new Task(() =>
            {
                Thread.Sleep(1000);
            });

我猜()说明这是一种新方法,但是我需要=>是什么以及为什么。

3 个答案:

答案 0 :(得分:9)

=>是C#用来定义lambda expression

的语法

它是VB Task构造函数中Sub() / End Sub的等价物。

而不是将委托定义为:

Dim del as Action = Sub() Threading.Thread.Sleep(1000)

在C#中,你会写:

Action del = () => Threading.Thread.Sleep(1000);

Task只是将相同的语法移动到构造函数中,并将其声明为内联。

答案 1 :(得分:1)

该示例使用lamda表达式为函数定义创建任务。您也可以使用委托或预定义函数创建它,如下所示:

void MyFunction() {
  Thread.Sleep(1000);
}

并像这样创建你的任务:

Task t = new Task(MyFunction);

有关lamda表达式的更多信息,请参阅以下链接:

http://msdn.microsoft.com/en-us/library/bb397687.aspx

答案 2 :(得分:1)

如果您愿意,可以使用以下等效语法:

Task t = new Task(delegate()
{
    Thread.Sleep(1000);
});

但在C#中,人们几乎总是使用lambda语法。