当前位置: 首页 > article >正文

C# 委托和事件(事件)

回调(callback)函数是Windows编程的一个重要部分。C或C++编程背景,在许多Windows API中使用过回调。VB添加AddressOf关键字后,开发人员就可以利用以前一度受到限制的API。回调函数实际上是方法调用的指针也称为函数指针。.NET以委托的形式实现函数指针的概念。C中函数指针只不过是一个指向存储单元的指针,无法说出这个指针实际指向什么,像参数和返回类型等更不知晓。

事件

事件基于委托,为委托提供一种发布/订阅机制。在架构内到处都能看到事件。

事件发布程序

对于事件,使用add和remove关键字添加和删除委托的处理程序:

private delegate Eventhandler<CarInfoEventArgs>newCarInfo;
public event EventHandler<CarInfoEventArgs>newCarInfo{
    add
    {
        newCarInfo+=value;
    }
    remove
    {
        newCarInfo=value;
    }
}
}

在触发事件之前,需要检查委托NewCarInfo是否不为空。如果没有订阅处理程序,委托就是空。

事件侦听器

Consuer类用作事件侦听器。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
//Consumer用于事件侦听器
namespace 事件发布程序
{
   public class Consumer
    {
        private string name;
        public Consumer(string Name)
        {
            this.name = name;
        }

        public void NewCarIsHere(object? sender, CarinfoEventArgs e) =>
            Console.WriteLine($"{0}:car{1} is new",name,e.Car);
    }
}

弱事件

通过弱事件,直接连接到发布程序和侦听器。例如,如果侦听器不再直接引用,发布程序就仍有一个引用。垃圾回收器不能清空侦听器占用的内存,因为发布程序扔保有一个引用,会针对侦听器触发事件。这种连接可以通过弱事件模式来解决,即使用WeakEventManager作为发布程序和侦听器之间的中介。


http://www.kler.cn/a/513699.html

相关文章:

  • 使用tritonserver完成clip-vit-large-patch14图像特征提取模型的工程化。
  • 前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!
  • 68,[8] BUUCTF WEB [RoarCTF 2019]Simple Upload(未写完)
  • ElasticSearch DSL查询之排序和分页
  • MIAOYUN信创云原生项目亮相西部“中试”生态对接活动
  • Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问
  • 如何用vscode断点调试Vue.js的项目
  • 在亚马逊云科技上用AI提示词优化功能写出漂亮提示词(上)
  • 解决windows系统远程桌面(或其他全屏应用)全屏后菜单栏不自动消失问题
  • Python多态的概念
  • R语言基础| 回归分析
  • ubuntu下安装gvim
  • 面试-字符串1
  • 解决使用code命令时的bash: code: command not found问题
  • 【JavaScript】for ... 循环语句的使用方法和示例,示例 for 嵌套---九九乘法表
  • SpringBoot项目中替换指定版本的tomcat
  • 7、数组知识点汇总
  • 学习ASP.NET Core的身份认证(基于JwtBearer的身份认证8)
  • 2024国游销量前20游戏分析:某开放世界武侠(排名11)
  • python基础语句整理
  • c++R赋值原始字符串
  • 【Leetcode 热题 100】118. 杨辉三角
  • Linux(Centos 7.6)命令详解:dos2unix
  • 什么是Oracle认证专家(OCP)?
  • 【游戏设计原理】76 - 惩罚
  • 《MX摩托车》V1.0官方学习版