C#委托示例

C#里事件订阅的一个小例子

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Runtime.Remoting.Messaging;
using System.IO;
using System.Net;

namespace ConsoleApplication2
{
     /// <summary>
     /// *************************************************************************
     /// 程序作者:李伟涛
     /// QQ:12666954
     /// 传递消息,驱动事件
     /// *************************************************************************
     /// </summary>
   
     public struct Quitperson//定义逃课人的信息
     {
         public string name;
         public string Class;
     }
     class client
     {
         public class CQuithireEventArgs:EventArgs
         {
             public readonly Quitperson quitperson;
             public CQuithireEventArgs(Quitperson quitperson)//封装事件信息
             {
                 this.quitperson=quitperson;
             }
         }
         public delegate void QuithireEventHandler(object sender, CQuithireEventArgs e);//定义委托
         public event QuithireEventHandler OnQuithire;//事件
         protected virtual void Quithire(CQuithireEventArgs e)//事件通知器
         {
             if (OnQuithire != null)
                 OnQuithire(this, e);
         }
         public void setQuitperson(Quitperson quitperson)
         {
             CQuithireEventArgs e = new CQuithireEventArgs(quitperson);
             Quithire(e);//调用通知器,通知所有登记事件的订阅着
         }
     }
     class teacher
     {
         public void report(object sender, client.CQuithireEventArgs e)
         {
             Console.WriteLine("{0}班的{1}逃课了!", e.quitperson.Class, e.quitperson.name);
         }
         public teacher(client clt)
         {
             clt.OnQuithire += new client.QuithireEventHandler(report);//注册事件
         }
     }
     class schoolposident
     {
         public void Sreport(object sender, client.CQuithireEventArgs e)
         {
             Console.WriteLine("{0}:{1}班的{2}逃课了!", DateTime.Now.ToShortDateString(), e.quitperson.Class, e.quitperson.name);

         }
         public schoolposident(client clt)
         {
             clt.OnQuithire += new client.QuithireEventHandler(Sreport);
         }
     }
     class Program
     {
         static void Main(string[] args)
         {
             Quitperson q = new Quitperson();//初始化逃课人信息
             q.Class = "软件051";
             q.name = "李伟涛";
             client clt = new client();
             //订阅事件
             teacher t = new teacher(clt);
             schoolposident sp = new schoolposident(clt);
             clt.setQuitperson(q);
             Console.ReadLine();

         }
     }

}

转载于:https://www.cnblogs.com/ori8/archive/2009/05/23/1487777.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值