C#委託 委託樣本 事件驅動

來源:互聯網
上載者:User
     
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();

         }
     }
   
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.