Re: C# 3.0 и анонимные делегаты - разочарование
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.03.08 23:10
Оценка: 2 (2) +3
Здравствуйте, Евгений Коробко, Вы писали:

ЕК>Основным применением для анонимных делегатов я видел такое:

ЕК>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>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.