(_) => 做工作();下划线如何作为匿名委托参数有效?
(_) => DoWork(); How an underscore is valid as a anonymous delegate parameter?
在 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());
哪个隐藏规则允许下划线“_”作为匿名委托中的参数名称?
下划线是 C# 中的普通标识符。例如 my_money
是有效的。所以 _
与 x
.
一样有效
你也可以写成_ => DoWork()
,我觉得比较常见。
在 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());
哪个隐藏规则允许下划线“_”作为匿名委托中的参数名称?
下划线是 C# 中的普通标识符。例如 my_money
是有效的。所以 _
与 x
.
你也可以写成_ => DoWork()
,我觉得比较常见。