zoukankan      html  css  js  c++  java
  • 委托事件

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Event2
    {
        //定义猫大叫事件的代理
        public delegate void AlertHandler();
        //主人类
        class Human
        {
            public event AlertHandler AlertEvent;
            public Mouse mouse = new Mouse();
            public Human()
            {
                AlertEvent += new AlertHandler(mouse.Run);
            }
            //主人被惊醒的方法
            public void Wake()
            {
               
                Console.WriteLine("主人:死猫别叫");
                AlertEvent();
            }
        }
        //老鼠类
        class Mouse
        {
            //老鼠被吓包的方法
            public void Run()
            {
                Console.WriteLine("老鼠:有危险,快跑!");
            }
        }
        //猫类
        class Cat
        {
            //猫大叫事件
            public event AlertHandler AlertEvent;
    
         
            public Human human = new Human();
            public Cat()
            {
                //猫大叫时执行Cry方法
                AlertEvent += new AlertHandler(Alert);
                AlertEvent += new AlertHandler(human.Wake);
               
             
            }
            //猫大叫事件执行的处理程序
            public void Alert()
            {
                Console.WriteLine("猫:喵...喵...");
            }
            //猫大叫的方法
            public void Cry()
            {
                //触发猫大叫的事件
                AlertEvent();
            }
        }
        //房子类
        //class House
        //{
        //    //房子里有一只老鼠、一只猫和主人
        //    public Mouse mouse = new Mouse();
        //    public Cat cat = new Cat();
        //    public Human human = new Human();
        //    //由于在一个房子里,猫大叫的事件会引发老鼠“逃跑”和主人“惊醒”
        //    //所以在这里把老鼠“逃跑”和主人“惊醒”两个方法挂接到猫大叫的事件上。
        //    public House()
        //    {
        //        cat.AlertEvent += new AlertHandler(mouse.Run);
        //        cat.AlertEvent += new AlertHandler(human.Wake);
        //    }
        //}
        //客户程序
        class Program
        {
            static void Main(string[] args)
            {
                //猫大叫
                Cat cat = new Cat();
                cat.Cry();
            }
        }
    
    }
    using System;
    
    namespace Example_2
    {
        /// <summary>
        /// 该程序演示委托和事件的用法。
        /// </summary>
        public delegate void NotifyZero();
        class EventTest
        {
            public event NotifyZero ZeroEntered;
            // 定义返回类型为 void 的委托
            
            // 定义一个与委托 NotifyZero 关联的事件
            
            //// 引发事件
            public void RaiseZero()
            {
                ZeroEntered();
            }
        }
        
        class Handlers
        {
            // 显示通知消息
            public static void Disp()
            {
                Console.WriteLine("不允许以零为除数");
            }
        }
    
        class TestZero
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                // 存储值和结果的变量
                int num1;
                int num2;
                double result;
    
                // EventTest 的对象
                EventTest objEventTest = new EventTest();
                // 订阅该事件
                
                objEventTest.ZeroEntered += new NotifyZero(Handlers.Disp);
                // 接受两个数
                Console.Write("请输入第一个数:");
                num1 = Convert.ToInt32(Console.ReadLine());
                Console.Write("请输入第二个数:");
                num2 = Convert.ToInt32(Console.ReadLine());
                // 如果第二个数字为 0 则引发事件
                if (num2 == 0)
                    objEventTest.RaiseZero();
                else
                {
                    // 除法
                    result = num1 / num2;
                    Console.WriteLine("除法的结果是:{0}", result);
                }
            }
        }
    }
  • 相关阅读:
    深入了解Java ClassLoader、Bytecode 、ASM、cglib (I)
    如何在ant里import
    敏捷练习(1)评估我的生活方向盘
    你是一个合格的孩子吗?
    [转] C# 路径(目录)
    XML学习记录
    js学习总结不断更新(1)
    LINQ TO XML练习
    做技术,切不可沉湎于技术
    js学习总结持续更新(2)
  • 原文地址:https://www.cnblogs.com/l25321937/p/4450705.html
Copyright © 2011-2022 走看看