C#委托和事件

1.委托

两大作用:
(1)将方法当作参数传递
(2)方法的一种多态(多播委托)
一个弊端:
委托可以使用=,+=,-=来发布订阅,所以这里有一个弊端,它可以使用“=”将所有已经订阅的取消,只保留=后的这一个订阅。这样如果让多个类中写的委托轻易就能被修改,让程序变得不安全,所以为了解决这个弊端,事件event应运而生。
多说几句,委托和event的关系就类似于字段与属性的关系,我们都知道为了保护字段不被修改,所以使用属性的get和set去访问该字段而不是直接去给字段赋值。所以同理,event也只能通过add和remove访问器来访问委托,即+=,-=。所以我们可以说事件是委托的包装器。

2.事件

C#委托和事件

如图,我觉得看到这张图就能搞懂事件了。

winform新建一个窗体Form1,它的里面新建一个名为myButton的按钮:

● 事件的拥有者:myButton对象。
● 事件:myButton.Click。
● 事件的响应者:窗体本身。
● 事件处理器:this.myButton_Click方法。

当你新建了一个事件时,这个事件就依此类比。

 

参考《深入浅出WPF》  彻底弄懂C#中delegate、event、EventHandler、Action、Func的使用和区别

C#-----事件委托EventHandler的定义与使用

原文链接:https://www.cnblogs.com/qingshanjianke/p/17296012.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#委托和事件 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 图文详解C#中的协变与逆变

    图文详解C#中的协变与逆变 什么是协变与逆变 协变和逆变是指可以使用派生类型来代替基类型的能力。协变用于返回值类型,逆变用于参数类型。在C#中,协变和逆变可以应用于委托(delegate)和泛型(generic)类型。 协变 协变可用于返回类型,指一个方法返回类型可以使用它继承的类型。使用out关键字可实现协变。 示例1 class Program { st…

    C# 2023年5月15日
    00
  • C#实现上传照片到物理路径,并且将地址保存到数据库的小例子

    下面我将和您详细讲解“C#实现上传照片到物理路径,并且将地址保存到数据库的小例子”的完整攻略。 一、准备工作 在开始编写代码之前,我们需要进行以下准备工作: 确认项目类型为Web项目(可以是ASP.NET WebForms或ASP.NET MVC) 建立用于保存照片的文件夹 创建数据库表,保存照片的路径 二、上传照片并保存到指定路径 在ASP.NET中,我们…

    C# 2023年5月31日
    00
  • 解析C#中[],List,Array,ArrayList的区别及应用

    下面我将详细讲解“解析C#中[], List, Array, ArrayList的区别及应用”的完整攻略。 []操作符 []操作符是C#语言中的数组索引操作符,用来获取数组中的元素。一个数组可以被看成是一个特殊的集合,它包含一组有相同类型的变量或对象。数组元素的下标是从0开始的,这意味着第一个元素的下标为0,第二个元素的下标为1,以此类推。 使用[]操作符访…

    C# 2023年6月1日
    00
  • C#调用SQLite的方法实例分析

    C#调用SQLite的方法实例分析 概述 本文将详细讲解C#调用SQLite的方法。SQLite是一种轻量级数据库,它可以存储和管理数据,适用于小型的应用程序。 在本文中,我们将使用SQLite的.NET依赖包来实现C#中对SQLite的调用。 步骤 第一步:安装SQLite的.NET依赖包 在Visual Studio 中,右键点击项目-> “管理N…

    C# 2023年6月1日
    00
  • 互斥量mutex的简单使用(实例讲解)

    互斥量mutex的简单使用(实例讲解) 什么是互斥量mutex 互斥量是一种用于保护共享资源的锁,它可以防止多个线程同时访问共享资源,从而保证线程安全。 如何使用互斥量 在使用互斥量之前,我们需要了解一些基本操作。 初始化互斥量 初始化互斥量可以使用pthread_mutex_init函数,该函数有两个参数,第一个参数是互斥量的指针,第二个参数是一个指向pt…

    C# 2023年6月7日
    00
  • C#实现的文件压缩和解压缩类

    关于C#实现的文件压缩和解压缩类的完整攻略,我可以提供如下的讲解: 一、为什么需要文件压缩和解压缩 当需要传输或者存储大量文件时,文件压缩是非常必要的。压缩文件可以减小文件的体积,从而减少传输和存储的时间和空间。压缩文件可以降低互联网网络和存储的压力,也可以提高数据传输的速度和带宽。 二、使用C#来实现文件压缩和解压缩 C#提供了很多方式来实现文件的压缩和解…

    C# 2023年6月1日
    00
  • C#编程实现查看剪切板内容的方法

    下面是关于“C#编程实现查看剪切板内容的方法”的完整攻略。 前置知识 在进行本文介绍的操作之前,需要了解以下相关的C#编程知识: .NET Framework中的System.Windows.Forms命名空间 C#语言中的条件语句 C#语言中的异常处理 主要步骤 第一步:导入命名空间 C#编程实现查看剪切板内容需要使用System.Windows.Form…

    C# 2023年6月7日
    00
  • C#利用时间和随即字符串创建唯一的订单编号

    创建唯一的订单编号通常需要使用时间戳和随机字符串,这种方式可以避免重复订单的产生。下面我们来讲解一下如何利用C#实现这种方法。 利用时间戳生成订单编号 时间戳是指从1970年1月1日00时00分00秒到现在的总秒数。我们可以将当前时间转换为时间戳,并将时间戳作为订单编号的一部分,从而保证每个订单编号都是唯一的。 下面是一个示例代码: // 获取当前时间的时间…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部