На этом уроке мы расмотрим еще один пример класса с событием. Класс наш будет представлять из себя игральную кость, в классе будет единственный метод rnd, возвращающий случайное число от 1 до 6. Если этот метод возвратит 6, то сгенерируется событие max. namespace test { //Объявление делегата. public delegate void EventHandler(); //Класс "Игральная кость". class MyDie { Random r; //Объвление события на основе делегата. public event EventHandler max; //Конструктор. public MyDie() { r=new Random(); } //Объявление метода, в котором вызывается событие. public int rnd() { //Случаное число от 1 до 6. int res = r.Next(6)+1; if(res==6) { //Вызываем событие. max(); } return res; } } //Класс для тестирования события. class Test { //Обработчик для события. public static void z() { Console.WriteLine("Вызов обработчика"); } //Метод main. static void Main(string[] args) { //Создаем экземпляр события. MyDie w=new MyDie(); //Добавление обработчика события. w.max+=new EventHandler(z); //Вызов метода, в котором вызывается событие. for(int k=0; k<10; k++) { Console.WriteLine("{0}", w.rnd()); } } } }
При запуске нашей программы к классе Test мы создаем новый экземпляр класса MyDie игральной кости, приписываем к событию max класса MyDie обработчик z, и подкидываем кость 10 раз. Если выпадет шестерка, то возникнет событие max и выполнится обработчик для него. Результат выполнения программы может быть, например, таким:
Источник: |