
Code
class 含参事件测试

{
//6.现在来触发事件
static void Main(string[] args)

{
Dog dog = new Dog();
Host host = new Host(dog);

//当前时间:从2009年11月1日23:59:50开始计时
DateTime now = new DateTime(2009,11,1,23,59,50);
DateTime midnight = new DateTime(2009,11,2,0,0,0);

//等待午夜的到来
Console.WriteLine("时间一秒一秒地流逝……");
while(now<midnight)

{
Console.WriteLine("当前时间:"+now);
Thread.Sleep(1000);
now = now.AddSeconds(1);
}
//午夜零点小偷到达,小狗发出警报事件
Console.WriteLine("\n月黑风高的午夜\n");
Console.WriteLine("小偷进入了房间……");
AlarmEventArgs e = new AlarmEventArgs(3);
dog.OnAlarm(e);
}
}


//构造事件参数
public class AlarmEventArgs : EventArgs

{
public int numberOfThieves;
public AlarmEventArgs(int numberValue)

{
this.numberOfThieves = numberValue;
}
}

//事件发送者
class Dog

{
//1.声明关于事件的委托
public delegate void AlarmEventHandler(object sender,AlarmEventArgs e);
//2.声明事件
public event AlarmEventHandler Alarm;
//3.编写引发事件的函数
public void OnAlarm(AlarmEventArgs e)

{
if (this.Alarm != null)

{
Console.WriteLine("\n小狗:有小偷进来了,汪汪……\n");
this.Alarm(this,e);
}
}
}

//事件接收者
class Host

{
//4.编写事件处理程序,参数中包含着numberOfThieves信息
//如果只有一个小偷,则抓住小偷;如果多于一个,主人报警
void HostHandleAlarm(object sender, AlarmEventArgs e)

{
if (e.numberOfThieves <= 1)

{
Console.WriteLine("主人:抓住小偷!");
}
else

{
Console.WriteLine("主人:我家来了{0}个小偷,快报警!",e.numberOfThieves);
}
}

//5.注册事件处理程序
public Host(Dog dog)

{
dog.Alarm+=new Dog.AlarmEventHandler(HostHandleAlarm);
}
}
posted @
2009-12-08 13:11
TimGong
阅读(
356)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构