很抱歉,如果这很明显。我正试图从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);
});
我猜()
说明这是一种新方法,但是我需要=>
是什么以及为什么。
答案 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表达式的更多信息,请参阅以下链接:
答案 2 :(得分:1)
如果您愿意,可以使用以下等效语法:
Task t = new Task(delegate()
{
Thread.Sleep(1000);
});
但在C#中,人们几乎总是使用lambda语法。