(_)=>做工作();下划线如何作为匿名委托参数有效?

时间:2015-02-06 10:12:03

标签: c# delegates anonymous-methods

excellent answer about starting a timer immediately中,我可以看到以下代码:

    timer.Elapsed += timer_Elapsed;
    ThreadPool.QueueUserWorkItem((_) => DoWork());
...

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
    DoWork();
}

void DoWork() {
    // etc...
}

我自己尝试了,我碰到了这一行,我认为在匿名代表建设中有一个错字:

                                What?
                                  |
                                  V
    ThreadPool.QueueUserWorkItem((_) => DoWork());

哪个隐藏规则成为下划线" _"可以作为匿名委托中的参数名称接受吗?

1 个答案:

答案 0 :(得分:12)

下划线是C#中的普通标识符字符。例如my_money有效。因此_x一样有效。

你也可以写_ => DoWork(),我觉得这种情况比较常见。