学懂C#编程:从一个简单的例子理解事件处理

在C#中,事件是一种特殊的委托类型,用于在对象上发生某些事情时通知订阅者。事件的处理通常包括定义事件,创建触发事件的条件,以及订阅该事件的事件处理程序。

以下是一个简单的C#事件处理示例:

cs 复制代码
using System;
 
// 定义委托类型
public delegate void SimpleEventHandler(object sender, EventArgs e);
 
// 定义包含事件的类
public class SimpleEventSource
{
    // 声明事件
    public event SimpleEventHandler SimpleEvent;
 
    // 触发事件的方法
    public void RaiseEvent()
    {
        // 检查是否有方法订阅了事件
        if (SimpleEvent != null)
        {
            // 使用EventArgs的默认实例触发事件
            SimpleEvent(this, EventArgs.Empty);
        }
    }
}
 
// 定义事件处理程序
public class SimpleEventReceiver
{
    public void OnSimpleEvent(object sender, EventArgs e)
    {
        Console.WriteLine("事件触发了!");
    }
}
 
public class Program
{
    public static void Main()
    {
        SimpleEventSource source = new SimpleEventSource();
        SimpleEventReceiver receiver = new SimpleEventReceiver();
 
        // 订阅事件
        source.SimpleEvent += receiver.OnSimpleEvent;
 
        // 触发事件
        source.RaiseEvent();
    }
}

在这个例子中,我们首先定义了一个委托SimpleEventHandler,然后定义了一个包含该事件的类SimpleEventSource。在SimpleEventSource中,我们定义了一个方法RaiseEvent来触发事件。SimpleEventReceiver类包含事件处理程序OnSimpleEvent,当事件触发时,它会在控制台上打印一条消息。在Main方法中,我们创建了事件源和接收器的实例,并订阅了事件。最后,我们调用RaiseEvent方法来模拟发生了一个事件,事件触发后,事件处理程序被调用。

相关推荐
xiaoye-duck9 小时前
《C++ 项目:手写大模型接入 SDK》DeepSeek接口设计(上):初始化和全量响应
开发语言·网络·c++·语言模型
fpcc9 小时前
跟我学c++中级篇—streambuf在glog中的应用分析
开发语言·c++
吾与谁归in9 小时前
C#脚本工具,支持智能提示自动补全(WPF + Roslyn + AvalonEdit)
开发语言·c#·wpf
昂好的day9 小时前
WPF 从零入门(上):WPF 是什么、XAML 语法、布局与样式全解
开发语言·c#·wpf
飞浪纪元[FWC–FE]9 小时前
Qt 构建排错实录:从 MSB 1009 到生成器选型
开发语言·数据库·qt
fly-iot9 小时前
【FDE知识库】(1):AI 编程时代开发语言选型分析,云使用go,企业用java,算法python,底层c
开发语言·人工智能·golang
云边有个稻草人9 小时前
Prometheus Pushgateway教程:离线任务指标上报、Shell与Python示例、远程访问
开发语言·python·prometheus
暴走约伯9 小时前
【VFX工具链源码拆解 01】总体架构:大型项目特效流程的程序化落地
开发语言·经验分享·3d·unity·架构·游戏引擎
C^h18 小时前
c++ string
开发语言·c++
raindayinrain18 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化