阅读我发现的一些代码:
ThreadPool.QueueUserWorkItem(delegate { this.SaveInternal(); });
为什么会有人放在delegate
这里?
阅读我发现的一些代码:
ThreadPool.QueueUserWorkItem(delegate { this.SaveInternal(); });
为什么会有人放在delegate
这里?
像这样使用委托只是传递任何您不关心参数的有效委托的捷径,同时保持编译器满意。否则,您将必须传递与委托签名匹配的方法。
最明显的答案是因为没有它代码将无法编译。例如:
ThreadPool.QueueUserWorkItem( { this.SaveInternal(); });
给Invalid expression term '{'
QueueUserWorkItem
需要一个WaitCallback参数,这是一个带Object
参数的方法。你所拥有的长形式是:
ThreadPool.QueueUserWorkItem((state) => { this.SaveInternal(); });
这与以下内容相同:
void Temp(Object state)
{
this.SaveInternal();
}
ThreadPool.QueueUserWorkItem(Temp);
添加delegate { this.SaveInternal(); }
允许编译器使用类型推断来解决明显的歧义。