首页 > 代码库 > 委托和事件的使用

委托和事件的使用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace delegatedemo
{
    public delegate void BoilDelegate(int temp);
    public class Heater
    {
        public int temprature;
        public event BoilDelegate boilEvent;
        public void Boil()
        {
            for (int i = 0; i <= 100; i++)
            {
                temprature = i;
                if (temprature > 95)
                {
                    if (boilEvent != null)
                    {
                        boilEvent(temprature);
                    }
                }
            }
        }
    }

}

显示器和报警器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace delegatedemo
{
    public class Alerm
    {
        public void MakeAlerm(int temp)
        {
            Console.WriteLine("滴滴滴,水已经{0}度!", temp);
        }
    }


    public class Display
    {
        public void ShowMsg(int temp)
        {
            Console.WriteLine("水温是{0}度", temp);
            Console.ReadKey();
        }
    }
}


调用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace delegatedemo
{
    class Program
    {
        static void Main(string[] args)
        {
            heater = new Heater();
            heater.boilEvent += new Alerm().MakeAlerm;//注册报警器发出警报的事件
            heater.boilEvent += new Display().ShowMsg;//注册显示温度的事件
            heater.Boil();
        }
    }
}

委托和事件的使用