事件实验程序

//此程序从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
{
///

1<summary>   
2/// 应用程序的主入口点。   
3/// </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;
}
}
}
//由此程序可以看出对事件的处理可以是类中的成员函数,也可以是单独的一个静态函数

Published At
Categories with Web编程
Tagged with
comments powered by Disqus