一个程序帮助你熟悉和使用C#中委托和事件

using System;

namespace Exam
{
 public delegate void DelegateEndExam(DateTime t,Student s);

 public class Student
 {
  private String _name;
  public event DelegateEndExam FinishExam;

  public Student(String name)
  {
   _name=name;
  }

  public void BeginTest(DateTime bt)
  {
   Console.WriteLine("{0}/t{1}开始答题",_name,bt);
  }

  public void HandInPaper()
  {
   Console.WriteLine("{0}/t答题完成",this.ToString());
   FinishExam(DateTime.Now,this);
  }

  public override string ToString()
  {
   return _name;
  }

 }

 public delegate void DelegateBeginExam(DateTime t);

 class Teacher
 {
  public event DelegateBeginExam BeginExam;

  public Teacher()
  {}

  public void SendBeginExam()
  {
   BeginExam(DateTime.Now);
  }

  public void AcceptPaper(DateTime t,Student s)
  {
   Console.WriteLine("收{0}/t的试卷",s.ToString());
  }

 }

 public class Exam
 {
  public Exam()
  {}

  public static void Main()
  {
   Teacher teacher=new Teacher();
   Student[] students=new Student[5];
   int index=0;
   students[index++]=new Student("Jack");
   students[index++]=new Student("Tom");
   students[index++]=new Student("Jim");
   students[index++]=new Student("Baker");
   students[index++]=new Student("Lucy");

   foreach(Student tr in students)
   {
    teacher.BeginExam+=new DelegateBeginExam(tr.BeginTest);
    tr.FinishExam+=new DelegateEndExam(teacher.AcceptPaper);
   }

   teacher.SendBeginExam();
   foreach(Student stu in students)
   {
    stu.HandInPaper();
   }
  }
 }
}
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值