Здравствуйте, Евгений Коробко, Вы писали:
ЕК>Основным применением для анонимных делегатов я видел такое:
ЕК>this.BeginInvoke(delegate (string s) {textbox1.Text = s;}, "123");
ЕК>Но оказывается, так нельзя
Почему — хз.
ЕК>cannot convert from 'anonymous method' to 'System.Delegate'
По порядку:
1) Никаких анонимных делегатов в природе не существует
2) Анонимные методы появились в C# 2.0
3) В 3.0 появились лямбды
4) BeginInvoke — угробище. Как по дизайну (правильные пацаны используют AsyncOperation, либо SynchronizationContext напрямую), так и по сигнатуре. Достаточно поменять сигнатуру так:
public void BeginInvoke(Action<string> method)
и можно будет писать так:
BeginInvoke(s => textBox1.Text = s)
Но даже с существующей сигнатурой можно написать так (могу немножко наврать, проверять лень):
BeginInvoke((Action)(() => textBox1.Text = "O La La"))
P.S. Стиль общения а-ля flame.* здесь лучше сменить.
... << RSDN@Home 1.2.0 alpha 4 rev. 1036 on Windows Vista 6.0.6001.65536>>