在下面的代码中,参数's'代表什么?我们不能只省略's',因为它没有在方法中使用,所以我们有一个没有参数的匿名方法,如()=> ...?
ThreadPool.QueueUserWorkItem((s)=>
{
Console.WriteLine("Working on a thread from threadpool");
});
更新1:
根据接受的答案,匿名方法只是正常WaitCallback委托方法的替代,如下面的ocd中那样,QueueUserWorkItem需要它作为参数。因此,'s'应该是对象类型,因为它是ThreadProc方法的参数。
void ThreadProc(Object stateInfo) {
// No state object was passed to QueueUserWorkItem, so
// stateInfo is null.
Console.WriteLine("Working on a thread from threadpool");
}
答案 0 :(得分:3)
匿名委托的C#2.0语法允许省略参数列表,在这种情况下,它将匹配任何一组(非ref
非 - out
)参数并忽略它们。
ThreadPool.QueueUserWorkItem(delegate {
Console.WriteLine("Working on a thread from threadpool");
});
请注意,delegate {}
与delegate () {}
另一方面,如果没有提供参数列表,则lambda语法不起作用。