Здравствуйте, dims12, Вы писали:
D>Разве нельзя всегда положить в делегат delegate void func(void); нестатический метод какого-нибудь класса и получить доступ к его экземпляру?
Можно. А можно использовать state
Re[2]: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, Lloyd, Вы писали:
L>Можно. А можно использовать state
state неудобен тем, что его ещё нужно приводить к нужному типу, чтобы обратиться к содержимому. Это его недостаток. А есть ли у него какие-то преимущества?
Re[3]: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, dims12, Вы писали:
L>>Можно. А можно использовать state
D>state неудобен тем, что его ещё нужно приводить к нужному типу, чтобы обратиться к содержимому. Это его недостаток. А есть ли у него какие-то преимущества?
Например, он лучше заточен на работу в студийном дизайнере — дизайнер по давлклику по свойству генерит метод текущей формы/контрола.
Re[4]: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, Lloyd, Вы писали:
D>>state неудобен тем, что его ещё нужно приводить к нужному типу, чтобы обратиться к содержимому. Это его недостаток. А есть ли у него какие-то преимущества?
L>Например, он лучше заточен на работу в студийном дизайнере — дизайнер по давлклику по свойству генерит метод текущей формы/контрола.
Не понял. Это же опять пример, когда state не нужен?
Re[5]: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, dims12, Вы писали:
L>>Например, он лучше заточен на работу в студийном дизайнере — дизайнер по давлклику по свойству генерит метод текущей формы/контрола.
D>Не понял. Это же опять пример, когда state не нужен?
Сорри, я не о том таймере подумал. Приношу свои извенения.
Re: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, dims12, Вы писали:
D>Зачем нужны параметры наподобие object state в TimerCallback?
D>Разве нельзя всегда положить в делегат delegate void func(void); нестатический метод какого-нибудь класса и получить доступ к его экземпляру?
Это тёмное наследие 1го фреймворка: ни лямбд, ни генериков — крутись как хочешь.
Re: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, Lloyd, Вы писали:
S>>Пардон, ни анонимных методов, ни генериков. Чтоб не придрались L>Ты не совсем понял вопрос.
Придрались
Зачем нужны параметры наподобие object state в TimerCallback?
Разве нельзя всегда положить в делегат delegate void func(void); нестатический метод какого-нибудь класса и получить доступ к его экземпляру?
Ответ в развёрнутой форме: в c# 1.0 не было синтаксического сахара. Поэтому пришлось бы писать тонны кода вида
class MyCallbackHandler
{
public int value1;
public void Process()
{}
}
void Subscribe()
{
MyCallbackHandler tmp = new MyCallbackHandler()
tmp.value1 = 2;
timer.Tick += new TimerCallback(tmp.Progress);
}
вместо
void Subscribe()
{
timer.Tick += new TimerCallback(Progress);
}
void Process(object arg)
{
int value1 = (int)arg;
}
Ответ принят?
Re[4]: Зачем нужен параметр object state в TimerCallback?
Здравствуйте, Lloyd, Вы писали:
L>Продолжаю придираться: а зачем ты все это написал? Ведь топикстартер и так знает про это, раз написал про метод нестатического класса?