@iRumba

Как обработать событие без принятия параметров?

Отступление.
Народ, из документаций по делегатам, которые я прочитал, мне непонятно, почему вот такая строчка компилируется?
Обьект.Событие += delegate { };

Теперь по теме.
Мне нужно выполнять один и тот же метод при разных событиях. Это может быть клик мышью, нажатие или отпускание кнопки клавиатуры, какие то собственные события. Методов таких тоже много. И я не хочу под каждое событие писать обработчик, который принимает нужные параметры (мне не нужны параметры, они меня не интересуют) и всего лишь запускает нужный метод. Я просто хочу сделать привязку события к методу без параметров, причем делать я это хочу динамически.

Скажите как такое осуществить? Или подскажите другое решение для моей задачи.
Заранее спасибо.
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Espleth
Гуглите Action и Func, а еще возможно пригодятся лямбда-выражения.
Ответ написан
artem_b89
@artem_b89
Сетевой бездельник
Сначала лучше взять и прочитать умную книжку, Рихтера, например, там всё написано почему и как.
Даже в самой ошибке написано, что подписываться на события надо так +=, а отписываться -=.
class Program
    {
        static void Main(string[] args)
        {
            new TestClass();
            Console.ReadLine();
        }
}
class TestClass
    {
        public delegate void SampleEventHandler();
        event SampleEventHandler onCreate;

        public TestClass()
        {
            onCreate += delegate { Console.Write("Hello "); };
            onCreate += () => { Console.Write("World "); };
            onCreate();
        }

    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы