阅读我发现的一些代码:
ThreadPool.QueueUserWorkItem(delegate { this.SaveInternal(); });
为什么有人会将delegate
放在这里?
答案 0 :(得分:2)
像这样的Usinng委托只是传递任何有效委托的快捷方式,你不关心参数,同时保持编译器满意。否则,您必须传递一个与委托签名匹配的方法。
答案 1 :(得分:2)
最明显的答案是因为没有它,代码将无法编译。例如:
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(); }
允许编译器使用类型推断来解决明显的歧义。