我阅读了以下代码,并希望了解更多lambda表达式。
ThreadStart starter = () => Threads.QueryThread(tmpweb, LastExecutedate);
var thread = new Thread(starter);
thread.Start();
在阅读documentation之后,没有给出参数(() =>
),表达式是使用静态方法Threads.QueryThread的匿名委托初始化ThreadStart实例?是吗?
答案 0 :(得分:0)
使用静态方法Threads.QueryThread的匿名委托?是吗?
不完全;它是一个委托实例,是指一个实现匿名方法的方法目标
反过来调用 Threads.QueryThread
方法,大概是使用捕获上下文来提供对tmpweb
和LastExecutedate
的访问(可能是通过this
?)< / p>
即
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();
请注意 这里的某些范围是差异,具体取决于完全 tmpweb
和LastExecutedate
是什么 - 如果他们 don& #39; t 实际上涉及任何捕获的上下文(所有静态,或者所有内容都在this
上),然后编译器可以做一些稍微不同的事情作为优化。