.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
事件实验程序

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

//此程序从0到100计数,对偶数产生事件
using System;

namespace myevent
{
 public delegate int EvenNumberHandler(int Number);//声明一个无返回值的以int型数为参数的委托
 
 class Counter   //声明计数器类
 {
  public event EvenNumberHandler OnEventNumber;//声明一个EvenNumberHandler委托类型的事件

  public Counter()
  {
   OnEventNumber=null;
  }

  public void CountTo100()   //公共方法,计数
  {
   int temp;
   int currentnumber;

   for (currentnumber=0;currentnumber<=100;currentnumber++)
   {
    if (currentnumber%2==0)
    {
     if (OnEventNumber!=null)
     {
      temp=OnEventNumber(currentnumber);
      Console.WriteLine(temp);
     }
    }
   }
  }
 }

 /*class EventNumberHandleClass
 {
  public void EventNumberFound(int EventNumber)
  {
   Console.Write(EventNumber+" ");
  }
 }*/

 class mainclass
 {
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   Counter MyCounter=new Counter();
   //EventNumberHandleClass MyEventNumberHandle=new EventNumberHandleClass();

   //MyCounter.OnEventNumber+=new EvenNumberHandler(MyEventNumberHandle.EventNumberFound);

   MyCounter.OnEventNumber+=new EvenNumberHandler(MyCounter_OnEventNumber);
   //1.将MyCounter_OnEventNumber函数做为OnEventNumber事件的处理,也就是将MyCounter_OnEventNumber
   //函数“安装”到事件中!
   //2.这里对事件函数的调用不用参数表是因为有委托的存在,委托就相当于C++中的函数指针,它指向
   //的是函数的首地址,所以不写参数表

   MyCounter.CountTo100();
   Console.ReadLine();
  }

  private static int MyCounter_OnEventNumber(int Number)  //事件函数(对事件的处理)
  //此函数的返回值的类型和参数类型是由委托决定的,必须和委托的声明一致
  {
   return Number;
  }
 }
}
//由此程序可以看出对事件的处理可以是类中的成员函数,也可以是单独的一个静态函数




相关文章

相关软件