我试图使lambda能够引用其自身,例如:

PictureBox pictureBox=...;
Request(() => {
    if (Form1.StaticImage==null)
        Request(thislambda); //What to change to the 'thislambda' variable?
    else
        pictureBox.Image=Form1.StaticImage; //When there's image, then just set it and quit requesting it again
});

当我尝试将lambda放入变量中,而lambda引用自身时,这当然是错误的。

我曾考虑过使用能够调用自身的方法来创建类,但是我想在这里坚持使用lambda。 (尽管到目前为止,它仅提供可读性,而没有优势)

最佳答案

您需要声明委托(delegate),将其初始化为某种形式,以便不访问未初始化的变量,然后使用lambda对其进行初始化。

Action action = null;
action = () => DoSomethingWithAction(action);

我看到的最常见的用法可能是事件处理程序在触发时需要从事件中删除自身时:
EventHandler handler = null;
handler = (s, args) =>
{
    DoStuff();
    something.SomeEvent -= handler;
};
something.SomeEvent += handler;

关于c# - 获取lambda以引用自身,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25877271/

10-11 06:38
查看更多