一个C# 事件的简单例子

 

using  System;

   
/*
    * 一个C# 事件的简单例子
  * 功能:当起床铃声响起,就引发学生起床/厨师做早餐两个事件
  * 设计很简单,目的是说明C# 中事件的含义
  
*/



//  定义一个委托
public   delegate   void  DoSomething();

//  产生事件的类 
public   class  Ring
{
    
// 声明一个委托事件
    public event DoSomething doIt;

    
// 构造函数
    public Ring()
    
{
    }


    
// 定义一个方法,即"响铃"   引发一个事件
    public void RaiseEvent()
    
{
        Console.WriteLine(
"铃声响了.......");

        
// 通知 学生类,厨师类,该起床的起床,该做早餐的做早餐
        if (null != doIt)
        
{
            doIt(); 
//  如果有注册的对象,才调用它们的方法 
        }

    }

}


//  学生类( 处理事件类一)
public   class  HandleEventOfStudents
{
    
// 默认构造函数
    public HandleEventOfStudents()
    
{
    }


    
// 当听到起床铃响起,学生起床(学生太累了,想睡个安稳觉,它告诉“铃声类” :“我好好睡觉,时间到了,你再叫我起床”)
    
//学生把起床事件登记[委托]到铃声类,让铃声类来通知他起床,自己只管好好睡觉
    public void GetUp()
    
{
        Console.WriteLine(
"[学生]:听到起床铃声响了,起床了。");
    }

}


//   校园厨师类(处理事件类二)  
public   class  HandleEventOfChefs
{
    
// 默认构造函数
    public HandleEventOfChefs()
    
{
    }


    
// 当听到起床铃响起, 应该准备给学生做早餐了(当然厨师也可能能是早就起床了)  
    
// 厨师就把为学生做早餐的事情登记到[委托]到铃声类,让铃声来通知他什么时候做早饭,免得做早了(免得做早了,早餐凉了,做晚了,学生可能就吃不上早餐了) 
    public void Cook()
    
{
        Console.WriteLine(
"[厨师]:听到起床铃声响了,为学生做早餐。");
    }

}


//  主类
public   class  ListenerEvent
{
    
public static void Main(String[] args)
    
{
        Ring ring 
= new Ring(); // 实例化一个铃声类[它是主角,都是因为它才牵连一系列的动作]  
        ring.doIt += new HandleEventOfStudents().GetUp; // 告诉铃声类,我委托你什么时候叫我起床.
        ring.doIt += new HandleEventOfChefs().Cook;        // 告诉铃声类,我也委托你叫我什么时候做早餐

        ring.RaiseEvent(); 
// 你一响起,学生要起床,厨师要早餐,( 所以,大家都不喜欢听到这个铃声") 
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值