Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2016, 19:16   #1
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
По умолчанию открепление лямбда метода от события

Всем привет, прохожу курс по c#

имеется строка:
Код:
// Невозможно открепить ранее присоединенный анонимный метод.
            instance.MyEvent -= delegate { Console.WriteLine("Анонимный метод 1."); };
как отмечено автором курса - Невозможно открепить ранее присоединенный анонимный метод
но, через некоторое время вносится поправка на то, что анонимный метод выступающий обработчиком события - открепить все же можно, но "... эту технику открепления вы увидите в следующем курсе" .

Возникает вопрос:

1) почему не срабатывает вышеприведенный метод открепления лямбда метода?

2) как открепить лямбда метод?

3)Если открепить лямбда метод не так просто, то можно ли (я не помню точно принимает ли лямбда метод параметры в конструктор) в его конструктор передать вызов например какого-нибудь другого обычного , например созданного нами "зловредного" метода(который будет делать какую-то пакость), который будет вызываться на это событие - через лямбда метод - вызываемый этим событием? Например при событии - "нажатие мышкой" (написанного нами а не готовым(стандартным) если таково имеется) - через лямбда метод вызвать какой-то "зловредный метод"
BadCats вне форума Ответить с цитированием
Старый 03.08.2016, 19:52   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Потому что это не тот метод, что был "прикреплен".

Код:
            EventDelegate handler = delegate { Console.WriteLine("Анонимный метод 1."); };
            instance.MyEvent += handler;
            instance.MyEvent -= handler;

Не надо в Помощи студентам создавать такие темы, для этого есть нормальные разделы.
http://www.programmersforum.ru/forumdisplay.php?f=59
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 03.08.2016 в 19:55.
Alex11223 вне форума Ответить с цитированием
Старый 03.08.2016, 22:51   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)ответили
2)как вариант возможно очистить все событие.
или через переменную как сказали.
3)да оно и без лямбд можно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лямбда-ошибка ser70 Общие вопросы по Java, Java SE, Kotlin 5 15.10.2015 19:54
События и лямбда-выражения Devdev12 Общие вопросы .NET 2 11.09.2013 14:32
Калькулятор, лямбда-исчисление Granus Общие вопросы C/C++ 0 08.06.2011 23:34
g++ лямбда the_deer_one Общие вопросы C/C++ 3 22.08.2010 15:19
Лямбда в С++? Utkin Общие вопросы по программированию, компьютерный форум 8 04.06.2010 12:51