两者有什么区别?

Invoke((MethodInvoker) delegate {
        checkedListBox1.Items.RemoveAt(i);
        checkedListBox1.Items.Insert(i, temp + validity);
        checkedListBox1.Update();
    }
);


Invoke((MethodInvoker)
    (
        () =>
        {
            checkedListBox1.Items.RemoveAt(i);
            checkedListBox1.Items.Insert(i, temp + validity);
            checkedListBox1.Update();
        }
    )
);

有什么理由要使用lambda表达式吗? (MethodInvoker)是否将委托(delegate)和lambda转换为MethodInvoker类型?哪种表达式不需要(MethodInvoker)强制转换?

最佳答案

1)lambda表达式更短更清晰

2)是的

3)您可以使用Action类型,如下所示:

Invoke(new Action(
    () =>
    {
        checkedListBox1.Items.RemoveAt(i);
        checkedListBox1.Items.Insert(i, temp + validity);
        checkedListBox1.Update();
    }
)
);

10-06 09:02