委托和事件之烧开水:Delegate and Event

来源:互联网 发布:淘宝章鱼家是真的吗 编辑:程序博客网 时间:2024/04/29 10:06

There was always a puzzle for me .

How to define a delegate?

How to create a event?

Of course,the delegate must appear early than event.

Step1: create a application class including delegate,event,trigger

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

namespace DelegateEvent
{
    class WaterWarning
    {
        public delegate void DeleType(int temperature);//like a function ,just a type
        public event DeleType WaterEvent;//concrete event rely on type of delegate
        public void Trigger(int temp) //a function used to trig the event
        {
            if (WaterEvent != null) //if registered event,not null
                WaterEvent(temp);
        }
    }
}

step2:main class

You should register a method for an event.

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

namespace DelegateEvent
{
    class Program
    {
        private void  Func()
        {
            Console.WriteLine("ok");
        }
       
        static void Main(string[] args)
        {

           WaterWarning WaterClass = new WaterWarning();
             WaterClass.WaterEvent += new WaterWarning.DeleType(WaterClass_WaterEvent);
            WaterClass.Trigger(70);
           
        }

       static void WaterClass_WaterEvent(int temperature)
        {
            if (temperature > 60)
                Console.WriteLine("the temperature is hot,the value is {0}", temperature);
        }
        
    }
}

That's all,very easy!