none
перевызов событий? RRS feed

  • Вопрос

  • всем привет, имеется данный пример:

     public delegate void EventDelegate();
    
        public class MyClass
        {
            public event EventDelegate myEvent = null;
    
            public void InvokeEvent()
            {
                myEvent.Invoke();
            }
        }
    
        class Program
        {
            // Методы обработчики события.
    
            static private void Handler1()
            {
                Console.WriteLine("Обработчик события 1");
            }
    
            static private void Handler2()
            {
                Console.WriteLine("Обработчик события 2");
            }
    
            static void Main()
            {
                MyClass instance = new MyClass(); 
    
                // Присоединение обработчиков событий. (Подписка на событие)
                instance.myEvent += new EventDelegate(Handler1);
                instance.myEvent += Handler2;
    
                // Метод который вызывает событие.
                instance.InvokeEvent();
    
                Console.WriteLine(new string('-', 20));
    
                // Открепляем Handler2().
                instance.myEvent -= new EventDelegate(Handler2);
    
                instance.InvokeEvent();
    
                // Delay.
                Console.ReadKey();
            }
        }

    Зачем тут метод InvokeEvent, который перевызывает событие myEvent? 

    Зачем вообще перевызывать событие? Почему не вызвать его "напрямую" - как метод?

    29 июля 2016 г. 16:46

Ответы

  • Генерировать событие может только класс - владелец этого события. Если генерацию необходимо выполнять из другого класса, нужен дополнительный публичный метод в классе - владельце события.

    Вообще, многие ответы на вопросы можно получить опытным путем. Попробуйте вызвать событие "напрямую" и прочитайте сообщения компилятора.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    2 августа 2016 г. 18:53