声明Thread语法理解

时间:2013-09-03 08:25:26

标签: c# syntax

在阅读一本名为“在C#中编程”的书时,我遇到了一种我无法理解的语法:

public static void Main(string[] args)
{
    new Thread( () =>
         {
            for(int x = 0; x < 10; x++)
            {
                _field++;
                Console.WriteLine("Thread A : {0}", _field);
            }

         }).Start();  
}

“()=&gt;”是指什么,以及调用什么构造函数?我试着谷歌但是“()=&gt;”有点难以搜索谷歌。

3 个答案:

答案 0 :(得分:1)

这是一个lambda表达式,请参阅here了解文档。

更具体地说,它是一个匿名函数。 Thread构造函数需要一个在线程启动时调用的函数。不是创建一个重用函数(void ThreadFunc() { ... }),而是在线声明一个匿名函数。

答案 1 :(得分:0)

我不知道C#,但这看起来像一个匿名函数。也就是说,一旦在单独的线程上调用start,Thread对象就会运行这个函数。

编辑:它被称为匿名,因为它没有名称,也是()=&gt; {}是'arguments'=&gt; “欢乐的身体

答案 2 :(得分:0)

() => ...只是意味着它是不带参数的lambda表达式。它与以下相同

没有参数:

void MyWork() // This is your class constructor
{
    for(int x = 0; x < 10; x++)
        {
            _field++;
            Console.WriteLine("Thread A : {0}", _field);
        }
}



new Thread(MyWork).Start();

使用参数:

void MyWork(int _number) // This is your class constructor
{
    for(int x = 0; x < _number; x++)
        {
            _field++;
            Console.WriteLine("Thread A : {0}", _field);
        }
}



new Thread(() => MyWork(10)).Start();