L'utilisation des événements en C# - chat et souris

Cas d'utilisation de l'événement : le chat qui miaule provoque la fuite de la souris et le propriétaire se réveille.
Définition de l'événement : l'événement est un membre de données d'une classe de type délégué, qui
                  représente le comportement sporadique de la classe (objet). Lorsque ce comportement se produit, il déclenche souvent l'exécution automatique d'autres comportements
                  Les événements sont utilisés pour implémenter des appels de liaison de deux comportements ou plus.
Étapes pour utiliser des événements (quatre) :
                  1. Définir des événements (nom d'événement de type délégué d'événement public ; par conséquent, vous devez définir le délégués à l'avance (représentant une classe de méthodes))
                  2. Enregistrer les événements (ajouter le comportement qui doit être exécuté lorsque l'événement est déclenché)
                  3. Déclencher l'événement (écrire le déclencheur de l'événement dans un comportement de méthode et déclencher le via l'appel du comportement, déclenchant ainsi l'appel du reste du comportement d'enregistrement) 4.
                  Appelez la méthode qui déclenche l'événement
       Remarque : Généralement, 1, 3 sont écrits du côté de la définition, là où la définition est déclenchée objet de classe)
                      2, 4 est écrit du côté appelant (le comportement enregistré peut faire de n'importe quelle spécification d'objet (même type) le comportement de)

Les événements sont une façon d'utiliser les délégués : (essentiellement, les événements sont un type spécial de délégué : en enregistrant (ou en liant) des méthodes, en appelant des événements (délégué) pour appeler des méthodes enregistrées)
 

class Program
    {
        //调用端
        static void Main(string[] args)
        {
            //因为事件定义在该类中,该类是事件源(猫叫),所以需要创建该对象 用于调用事件注册方法
            Cat cat = new Cat();

            //事件触发后 会相应的行为对象(老鼠跑、人惊醒),因此需要创建出对象,用于注册其中的方法行为
            Mouse mouse = new Mouse();
            Master master = new Master();

            //步骤二:注册事件  当该事件触发时 则会执行对应注册的方法行为(注册任何相同类型(对象)的行为都可以)
            cat.On_Call += mouse.Run;
            cat.On_Call += master.Weak;
            //取消注册
            cat.On_Call -= master.Weak;

            //步骤四:调用触发事件的方法
            cat.Call();//当执行该方法时,触发事件(因为事件的调用在该方法中,即与之绑定了),因此触发注册的行为

        }
    }

//定义端

    //定义委托
    delegate void Handler();

    /// <summary>
    /// 猫类(事件源)
    /// </summary>
    class Cat
    {
        /// <summary>
        /// 步骤一:定义事件(event可以省略)
        /// </summary>
        public event Handler On_Call;

        public void Call()
        {
            Console.WriteLine("猫叫了");
            if (On_Call != null)//如果事件不为空 则可以触发事件
                //步骤三:调用事件(因为该对象是事件源,事件是由该对象触发的,所以事件定义在哪里就在哪里触发)
                On_Call();
        }


    }
    class Mouse
    {

        public void Run()
        {
            Console.WriteLine("老鼠逃跑了");
        }
    }
    class Master
    {
        public void Weak()
        {
            Console.WriteLine("主人惊醒了");
        }
    }

Guess you like

Origin blog.csdn.net/weixin_44906202/article/details/128323244