Лямбда-выражение вместо делегата - PullRequest
0 голосов
/ 01 ноября 2018

у меня 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 });

Как сделать все это проще с помощью лямбда-выражения?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Простейший лайнер, я думаю, вот этот

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

(это работает, потому что Action просто делегат)

0 голосов
/ 01 ноября 2018

объединяя два приведенных выше ответа, я думаю, что это лучший компромисс:

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

Редактировать ; заимствовано из этого вопрос

РЕДАКТИРОВАТЬ 2 ; пример с параметрами:

textBox1.Invoke(new Action<string, RichTextBox>((a, b) => {}), new object[] {"a", new RichTextBox() });
0 голосов
/ 01 ноября 2018

Если это поможет, вы можете использовать Action:

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

_textBox.Invoke(a, new object[] { "aaaa", _textBox });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...