委托与事件例子

代码
/* ***********************************************
 * Author        :  lixiaomo
 * Email        :  lixiaomo1989@gmail.com
 * Description    :  妈妈睡觉,猫捉老鼠碰到花瓶,吵醒妈妈。
 * **********************************************
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyConsole
{
    
public class Master
    {
        
//定义委托,它定义了可以代表的方法类型
        public delegate void BoilHandler(int iCount);
        
public event BoilHandler wakeEvent;//声明事件

        
//主人在睡觉
        public void Sleep(int param)
        {
            Console.WriteLine(
"Alarm: 忽忽、嘘嘘zzzz 我睡{0}次",param);
        }
        
//猫捕捉老鼠
        public void Osnap()
        {
            
for (int i = 0; i < 5; i++)
            {
                
if (i != 0)//是否捕捉到老鼠
                {
                    Console.WriteLine(
"Action:捕捉到" + i + "只老鼠!");
                    
if (wakeEvent != null)
                    {
                        wakeEvent(i);
                    }
                }
            }
        }
        
//主人被吵醒
        public void wakeing(int param)
        {
            Console.WriteLine(
"吵醒我{0}次,主人被吵醒!",param);
        }
    }
    
class Actions
    {
        
static void Main(string[] args)
        {
            Master master 
= new Master();
            master.wakeEvent 
+= master.Sleep;
            master.wakeEvent 
+= master.wakeing;

            master.Osnap();
            Console.ReadKey();
        }
    }

}


原文地址:https://www.cnblogs.com/u_xiaomo/p/1654900.html