我发现了一些新的C#语法,并不明白它的含义。下面是语法相关的代码:为什么我可以使用lambda表达式代替回调委托?
1)
BeginInvoke(new Action(() =>
{
PopulateUI(ds);
}));
2)
private void OnFormLoad()
{
ThreadPool.QueueUserWorkItem(() => GetSqlData());
}
什么是new Action()
意思,什么是=>
符号的意义?
ThreadPool.QueueUserWorkItem
的语法为ThreadPool.QueueUserWorkItem(new WaitCallback(PrintOut), "Hello");
,但在这里显示ThreadPool.QueueUserWorkItem(() => GetSqlData());
,那么它是如何工作的?为什么WaitCallback
失踪?请详细解释。
非常感谢。
*()=> some_code *是一个lambda表达式,它只是编写匿名代理的捷径。我认为你的困惑是由太多的方式来实现相同的事情造成的。 – 2010-12-20 06:49:03
@PauliØsterø:很好说:) – BoltClock 2010-12-20 06:53:19
'ThreadPool.QueueUserWorkItem(()=> GetSqlData());'不会在我的测试应用程序中编译。您的项目使用哪种版本的.NET框架(或者至少VS的版本是什么)? – 2010-12-20 07:09:47