不带参数的委托
本文关键字:参数 | 更新日期: 2023-09-27 17:49:27
我得到了这个代码
ThreadPool.QueueUserWorkItem(delegate(object state) { MessageBox.Show("somethinghere"); });
有更好的方法吗?我使用delegate(object state)
,但我甚至不需要这个,但当我使用delegate()
时,它会给我一个错误!
你可以这样做:
ThreadPool.QueueUserWorkItem(delegate { ... });
或
ThreadPool.QueueUserWorkItem(_ => { ... });
您可以完全省略参数列表:
ThreadPool.QueueUserWorkItem(delegate { MessageBox.Show("somethinghere"); });
或者你可以使用lambda:
ThreadPool.QueueUserWorkItem(s => MessageBox.Show("somethinghere"));
方法ThreadPool。QueueUserWorkItem期望委托作为参数声明如下:
public delegate void WaitCallback(object state);
如果你使用delegate(),它会给出一个错误,因为你没有匹配委托签名,这需要一个对象作为输入,一个void作为返回。
你可以像下面这样使用lambda表达式:
ThreadPool.QueueUserWorkItem(state => MessageBox.Show("somethinghere"));
或者你可以创建一个方法来匹配这个签名,像这样:
private void waitCallBackMethod(object state)
{
MessageBox.Show("somethinghere");
}
,然后像这样在调用中使用:
ThreadPool.QueueUserWorkItem(waitCallBackMethod);