返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c#之事件用法
  • 748
分享到

c#之事件用法

2024-04-02 19:04:59 748人浏览 薄情痞子
摘要

事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。使用event关键字将一个委托类型定义为事件。下面通过一个例子介绍事件: //事件发布类 public c

事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。
使用event关键字将一个委托类型定义为事件。
下面通过一个例子介绍事件:

//事件发布类
        public class PublishEvent
        {
            public delegate string Display(string str);
            public event Display DisplayEvent;

            //客户端代码通过调用这个方法触发事件
            public void Shows(string str)
            {
                if (DisplayEvent != null)
                {
                    DisplayEvent(str);
                }
            }

        }

        //事件侦听类,这个类订阅事件
        public class Listen1
        {
            public string MakeAlert(string str)
            {
                Console.WriteLine(str + "Listen1");
                return str + "Listen1";
            }
        }
        public class Listen2
        {
            public string ShowMsg(string str)
            {
                Console.WriteLine(str + "Listen2");
                return str + "Listen2";
            }
        }

客户端代码:

class Program
        {
            static void Main()
            {
                PublishEvent pe = new PublishEvent();
                Listen1 l1 =  new Listen1();
                Listen2 l2 = new Listen2();

                //变量l1和l2订阅了事件
                pe.DisplayEvent += l1.MakeAlert;
                pe.DisplayEvent += l2.ShowMsg;

                //触发事件
                pe.Shows("事件");

                Console.ReadKey();

            }
        }

事件就是一个特殊的委托(https://www.jb51.net/article/244051.htm),它是一个用于事件驱动模型的专用委托.你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发。也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发。除此之此,事件拥有委托的所有功能,包括多播特性。即事件可以有多个事件处理函数,委托同样也可以是个多播委托.
事件是封装过的委托实例;委托是类型,事件是实例!
EventHandler<TEventArgs>.NET自带的委托,也用于定义事件。

到此这篇关于C#之事件用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: c#之事件用法

本文链接: https://lsjlt.com/news/145625.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • c#之事件用法
    事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。使用event关键字将一个委托类型定义为事件。下面通过一个例子介绍事件: //事件发布类 public c...
    99+
    2024-04-02
  • vue @tap事件之$event用法介绍
    目录vue $event用法vue奇怪的event对象event 对象乌龙vue $event用法 html   <span class="cha mui-badge...
    99+
    2024-04-02
  • c#事件怎么用
    本文小编为大家详细介绍“c#事件怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c#事件怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。使用e...
    99+
    2023-06-30
  • c#多线程通信之委托事件
    在研究c# 线程之间通信时,发现传统的方法大概有三种: 全局变量,由于同一进程下的多个进程之间共享数据空间,所以使用全局变量是最简单的方法,但要记住使用volatile进行限制...
    99+
    2024-04-02
  • C#事件中关于sender的用法解读
    目录C#事件sender的小用法一、什么是sender二、小用法C#事件中sender和e参数的理解C#事件sender的小用法 开WPF新坑了,看了WPF的炫酷界面,再看看winF...
    99+
    2024-04-02
  • VUE事件处理之@click用法示例代码
    目录一、不传参的事件处理1.原理2.代码示例二、传参的事件处理1.原理2.代码示例总结总览 1.传参的事件绑定 2.不传参的事件绑定 一、不传参的事件处理 1.原理 1.1 我们在v...
    99+
    2023-05-19
    vue click事件 vue @click vue事件处理机制
  • C#之多余控件事件及代码删除问题
    目录多余控件事件及代码删除一、选中控件-F4到属性-事件-选中想要删除的事件名称,删除;二、回到后台程序,删除事件代码即可注意:以上两步不可以反总结多余控件事件及代码删除 很多时候,...
    99+
    2023-01-28
    C#多余控件事件 C#代码删除 C#控件
  • C#中怎么调用事件
    本篇文章为大家展示了C#中怎么调用事件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#调用事件如果没有任何客户将委托与该事件挂钩,该字段将为空;否则该字段引用应在调用该事件时调用的委托。因此,C#...
    99+
    2023-06-17
  • mysql事件之修改事件、禁用事件、启用事件、事件重命名及数据库事件迁移操作的示例分析
    这篇文章主要为大家展示了“mysql事件之修改事件、禁用事件、启用事件、事件重命名及数据库事件迁移操作的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“m...
    99+
    2024-04-02
  • C#的button事件怎么使用
    本篇内容介绍了“C#的button事件怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# button事件说明:splitConta...
    99+
    2023-06-17
  • C# SelectedIndexChanged事件详解
    SelectionChangeCommitted事件 在设定datasource和displaymember和valuemember时,以及手动改变combobox索引和值时都不触发...
    99+
    2024-04-02
  • C++之 ostream详细用法
    `ostream` 是 C++ 标准库中用于输出的基类,它定义了输出流对象的基本行为和接口。`ostream` 是一个抽象类,不能直...
    99+
    2023-09-02
    C++
  • C语言算法练习之抓交通肇事犯
    目录1. 问题描述2. 题目分析3. 算法设计4. 流程框架5. 代码实现6. 算法升级1. 问题描述 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记...
    99+
    2024-04-02
  • Vue之事件处理和事件修饰符详解
    <div id="root"> <h2>{{name}},加油!</h2> <!-- 阻止默认事...
    99+
    2024-04-02
  • 详解c# 事件总线
    目录简介实现事件总线定义事件基类定义事件参数基类定义EventBus使用事件总线事件及事件参数定义发布者定义订阅者实际使用总结简介 事件总线是对发布-订阅模式的一种实现,是一种集中...
    99+
    2024-04-02
  • C#如何定义事件
    小编给大家分享一下C#如何定义事件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!C#定义事件应用最近公司在上一个wpf项目,熟悉WPF的同学都知道,WPF控件中,"用户控件"这个概念非常常见,我们也经常...
    99+
    2023-06-18
  • C#集合之栈的用法
    栈(Stack)和队列是非常类似的一个容器,只是栈是一个后进先出(LIFO)的容器。栈用Push()方法在栈中添加元素,用Pop()方法获取最近添加的一个元素: Stack<...
    99+
    2024-04-02
  • C#之StreamWriter StreamWriter使用方法
    StreamWriter 是 C# 中用于写入文本文件的类。下面是 StreamWriter 类的一些常用方法和用法:1. 创建 S...
    99+
    2023-09-13
    C#
  • C#中 Application_Error事件的作用是什么
    这篇文章将为大家详细讲解有关C#中 Application_Error事件的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 C# Application_Error事件:...
    99+
    2023-06-17
  • C# 中Page_Error事件的作用是什么
    这篇文章给大家介绍C# 中Page_Error事件的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ASP.NET 在处理和响应错误的方式上进行了若干改进。在传统的 ASP 中,是用"On Error...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作