Lambda表达式代替委托

时间:2018-11-01 15:07:52

标签: c# lambda delegates

我有Delegate a

    public delegate void doLog( String value , RichTextBox lger ) ;

    public void doLg(String value, RichTextBox lger)
    {
        lger.AppendText(value);
    }

    doLog a = new doLog(doLg);

我在Invoke通话中使用了该委托人:

_textBox.Invoke(a, new Object[] { "aaaa", _textBox });

如何使用lambda表达式简化所有操作?

3 个答案:

答案 0 :(得分:1)

我认为这是一个简单的班轮

_textBox.Invoke(new Action(() => { doLog("aaaa", _textBox); }));

(之所以起作用是因为Action只是委托)

答案 1 :(得分:0)

如果可以做的更好,可以使用Action

Action<string, RichTextBox> a = (value, lger) => { };

_textBox.Invoke(a, new object[] { "aaaa", _textBox });

答案 2 :(得分:0)

结合以上两个答案,我认为这是最好的折衷方案:

textBox1.Invoke(new Action(() => { /* your code here */ }), new object[] { "a", "b" });

修改;从这个question

借来的钱

编辑2 ;带有参数的示例:

textBox1.Invoke(new Action<string, RichTextBox>((a, b) => {}), new object[] {"a", new RichTextBox() });