0

While reading a book named "Programming in C#", I've came across a syntax that I fail to understand :

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

         }).Start();  
}

What does " () => " refers to, and what constructor is called ? I tried to google it but "() =>" is kinda hard to search on google.

4

3 回答 3

1

这是一个 lambda 表达式,请参阅此处的文档。

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

于 2013-09-03T08:39:54.927 回答
0

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

编辑:它之所以称为匿名,是因为它没有名字,而且 () => {} 是 'arguments' => 'fun-body'

于 2013-09-03T08:29:57.187 回答
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();
于 2013-09-03T08:47:45.607 回答