gpt4 book ai didi

c# - 参数化线程,理解lambda表达式

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:33 28 4
gpt4 key购买 nike

我阅读了以下代码并希望对 lambda 表达式有更多的了解。

ThreadStart starter = () => Threads.QueryThread(tmpweb, LastExecutedate);
var thread = new Thread(starter);
thread.Start();

看完documentation , 没有给出参数 (() =>) 并且表达式是使用静态方法 Threads.QueryThread 的匿名委托(delegate)初始化 ThreadStart 实例?是这样吗?

最佳答案

with an anonymous delegate of the static method Threads.QueryThread ? Is that right ?

不完全是;它是一个委托(delegate)实例,指的是实现匿名方法的方法目标依次调用 Threads.QueryThread 方法,可能使用提供对tmpwebLastExecutedate 访问的捕获上下文(可能通过this?)

class SomeClass {
public SomeType tmpweb;
public SomeOtherType @this;
public void TheMethod() {
Threads.QueryThread(tmpweb, @this.LastExecutedate);
}
}

和:

SomeClass ctx = new SomeClass { @this = this };
...
ctx.tmpweb = ...
...
ThreadStart starter = new ThreadStart(ctx.TheMethod);
var thread = new Thread(starter);
thread.Start();

请注意, 此处存在一些差异范围,具体取决于确切地tmpwebLastExecutedate 是什么 -如果它们实际上涉及任何捕获的上下文(都是静态的,或者所有内容都在 this 上),那么编译器可以做一些与优化略有不同的事情。

关于c# - 参数化线程,理解lambda表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756346/

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