2

对不起,如果这很明显。我正在尝试从 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);
            });

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

4

3 回答 3

9

=>是 C# 用于定义lambda 表达式的语法。

它与您的 VB Task 构造函数中的Sub()/等效。End Sub

而不是将委托定义为:

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

在 C# 中,您将编写:

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

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

于 2013-05-24T23:39:20.697 回答
1

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

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

并像这样创建您的任务:

Task t = new Task(MyFunction);

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

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

于 2013-05-24T23:39:47.433 回答
1

如果你喜欢,你可以使用这个等价的语法:

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

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

于 2013-05-24T23:46:19.380 回答