C#事件

来源:互联网 发布:打击网络犯罪工作总结 编辑:程序博客网 时间:2024/06/07 11:19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication3
{
    //事件:是一种消息机制,一旦事件触发,那么会有一系列的对象也同时会做出相应的操作


    delegate void DelWork();


    class WangHaiJian
    {
        public event DelWork BuEvent;


        public WangHaiJian(XingRen x,Bank b)
        {
            BuEvent += new DelWork(b.BeiZha);
            BuEvent += new DelWork(x.Dead);
            
        }
        public void Buring()
        {
           
            Console.Write("王海健点火,爆炸事件触发,");
            BuEvent();
        }
    }
    class XingRen
    {
        public void Dead()
        {
            Console.Write("行人死亡,");
        }
    }
    class Bank
    {
        public void BeiZha()
        { 
        Console.Write("银行被炸");
        }
    }


    class Cat
    {
        
        public event DelWork CatEvent;


        public Cat(Hoster h,Mouse m)
        {
            CatEvent += new DelWork(h.Wake);
            CatEvent += new DelWork(m.Run);
        }
        public void Miao()
        {
            Console.Write("猫叫了,");
            CatEvent();
        }
    }


    class Hoster
    {
        public void Wake()
        { 
        Console.Write("主人醒了,");
        }
    }


    class Mouse
    { 
        public void Run()
        {
        Console.Write("老鼠跑了。");
        }
    
    }


    class President
    {
        public void DoWork(DelWork d)
        {
            d();
        }
    }


    class Dog
    {
        //事件记录的是多个委托,一旦事件触发
        //事件就会通知这个事件上的所有的委托上的所有的方法都执行
        public event DelWork attackEvent;


        //public Dog(Human h)
        //{ 
        
        //}
        public void OnAttack()
        {
            Console.WriteLine("狗咬人");
            attackEvent();


        }
    }


    class Human
    {


        string name ="";


        public string Name
        {
          get { return name; }
          set { name = value; }
         }




        public Human(string n)
        {
            this.name = n;
        }
        public Human(string n,Dog d)
        {
        this.name=n;
        d.attackEvent += new DelWork(Run);
        d.attackEvent += new DelWork(Hit);
       
        }
        public void Run()
        {
            Console.WriteLine("{0}跑",name);
        }


        public void Hit()
        {
            Console.WriteLine("{0}打狗",name);
        }
    }
    class Program
    {


        public void Work()
        {


            Console.WriteLine("奥特曼");
        }
        static void Main(string[] args)
        {
            //President pd = new President();
            //Program p=new Program();
            //DelWork dw = new DelWork(p.Work);
            //pd.DoWork(dw);
            //Dog d = new Dog();
            //Human h = new Human("杨逍");
            //Human h1 = new Human("狗不理", d);
            //Human h3 = new Human("杨坤", d);


            //d.OnAttack();
            Hoster h = new Hoster();
            Mouse m = new Mouse();
            Cat c = new Cat(h,m);
            c.Miao();


            XingRen x = new XingRen();
            Bank b = new Bank();


            WangHaiJian w = new WangHaiJian(x,b);
            w.Buring();






        }
    }
}