gpt4 book ai didi

C#/ lambda : object parameter explanation request (noob)

转载 作者:行者123 更新时间:2023-11-30 13:34:52 25 4
gpt4 key购买 nike

这里是全新的,有一个关于这篇文章的问题:ThreadPool.QueueUserWorkItem with a lambda expression and anonymous method

具体这个:

ThreadPool.QueueUserWorkItem(
o => test.DoWork(s1, s2)
);

有人可以解释一下“o”是什么吗?我可以看到(在 VS2008 中)它是一个对象参数,但我基本上不明白为什么以及如何。

最佳答案

ThreadPool.QueueUserWorkItem 需要一个 WaitCallback 委托(delegate)作为参数。

此委托(delegate)类型对应于 Object 类型的一个参数的 void 函数。

所以,完整版本的调用可能是

ThreadPool.QueueUserWorkItem(
new WaitCallback(delegate(object state) { test.DoWork(s1,s2); });
);

更简洁一点

ThreadPool.QueueUserWorkItem(
delegate(object state) { test.DoWork(s1,s2); };
);

使用 C# 3.0 语法,我们可以将其写成更短的形式:

ThreadPool.QueueUserWorkItem(
(object state) => { test.DoWork(s1,s2); };
);

C# 3.0 lambda 语法允许省略 state 的类型。由于实际上不需要此参数,因此它也缩写为其类型的第一个字母。

关于C#/ lambda : object parameter explanation request (noob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com