河南的网站建设公司/新闻头条今日新闻

河南的网站建设公司,新闻头条今日新闻,最优惠的郑州网站建设,杭州做代发的网站有哪些1. 委托(Delegate) 定义与作用 ‌委托‌是类型安全的函数指针,用于封装方法,支持多播(链式调用)。‌核心能力‌:将方法作为参数传递或异步回调。 使用场景 回调机制(如异步操作完…

1. 委托(Delegate)

定义与作用
  • 委托‌是类型安全的函数指针,用于封装方法,支持多播(链式调用)。
  • 核心能力‌:将方法作为参数传递或异步回调。
使用场景
  1. 回调机制(如异步操作完成通知)。
  2. 实现策略模式(动态替换算法逻辑)。
  3. LINQ查询中的条件筛选(Where(x => x > 6))。
  4. 多播委托(多个方法依次执行)。
示例代码
// 定义委托 
public delegate void LogHandler(string message); 
/ 使用委托public class Processor 
{ public void RunTask(LogHandler logger) 
{ logger("Task started.");
// ...业务逻辑 logger("Task completed."); 
} 
} // 调用方 
var processor = new Processor(); 
processor.RunTask(message => Console.WriteLine($"[LOG] {message}")); 

2. 事件(Event)

定义与作用
  • 事件‌是基于委托的语法糖,强制封装性,遵循‌发布-订阅模式‌。
  • 核心规则‌:只能在声明类内部触发(Invoke),外部仅能+=-=订阅。
使用场景
  1. GUI事件(按钮点击、鼠标移动)。
  2. 观察者模式(状态变化通知)。
  3. 松耦合系统(组件间通信)。
示例代码
// 定义事件public class OrderService 
{ 
public event EventHandler<OrderEventArgs> OrderSubmitted; 
public void SubmitOrder(Order order) 
{ 
// ...提交订单逻辑 
OnOrderSubmitted(new OrderEventArgs(order));} 
protected virtual void OnOrderSubmitted(OrderEventArgs e) 
{ OrderSubmitted?.Invoke(this, e); } } 
// 订阅事件 var service = new OrderService();service.OrderSubmitted += (sender, e) => { 
Console.WriteLine($"Order {e.OrderId} submitted!");}; 

3. 委托与事件的关系

特性委托事件
封装性可被外部直接调用只能在声明类内触发
多播支持支持
安全性低(外部可修改委托链)高(外部仅订阅/取消)
典型用途灵活的方法传递系统级通知(如UI交互)

关键点总结

  1. 委托是基础‌:事件本质是受限的委托,编译器自动生成add/remove方法。
  2. 设计原则‌:
    • 事件用于‌被动通知‌(如用户操作)。
    • 委托用于‌主动传递逻辑‌(如回调函数)。
  3. 代码规范‌:事件命名使用动词(如Clicked/DataReceived),委托命名用Handler后缀。

疑问与解决方案

Q1:为什么事件比委托更安全?
A1:事件禁止外部直接赋值(=操作符),强制通过+=-=管理订阅,避免覆盖其他订阅者。

Q2:何时选择自定义委托而非Action/Func
A2:需要明确语义时

(如public delegate void PriceChangedHandler(double oldPrice)优于Action<double>)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从替代到超越,禅道国产化替代解决方案2.0发布!

3月22日&#xff0c;由禅道携手上海惠艾信息科技、麦哲思科技共同举办的禅道・中国行北京站活动圆满落下帷幕。 除深入探究AI赋能研发项目管理外&#xff0c;禅道在活动现场正式发布了《禅道国产化替代解决方案2.0》&#xff0c;助力企业全方位构建自主可控的研发项目管理新体…

2025美国网络专线国内服务商推荐

在海外业务竞争加剧的背景下&#xff0c;稳定高效的美国网络专线已成为外贸企业、跨国电商及跨国企业的刚需。面对复杂的国际网络环境和严苛的业务要求&#xff0c;国内服务商Ogcloud凭借其创新的SD-WAN技术架构与全球化网络布局&#xff0c;正成为企业拓展北美市场的优选合作伙…

2.2.2 引入配置文件和定义配置类

本实战通过三种方式实现Spring Boot中的配置加载与管理。首先&#xff0c;通过PropertySource加载自定义配置文件&#xff0c;结合ConfigurationProperties注解将配置文件中的属性绑定到Java类中&#xff0c;实现配置的灵活管理。其次&#xff0c;利用ImportResource加载XML配置…

Django:构建高性能Web应用

引言&#xff1a;为何选择Django&#xff1f; 在当今快速发展的互联网时代&#xff0c;Web应用的开发效率与可维护性成为开发者关注的核心。Django作为一款基于Python的高级Web框架&#xff0c;以其"开箱即用"的特性、强大的ORM系统、优雅的URL路由设计&#xff0c;…

【银河麒麟高级服务器操作系统 】虚拟机运行数据库存储异常现象分析及处理全流程

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer…

《2核2G阿里云神操作!Ubuntu+Ollama低成本部署Deepseek模型实战》

简介&#xff1a; “本文为AI开发者揭秘如何在阿里云2核2G轻量级ECS服务器上&#xff0c;通过Ubuntu系统与Ollama框架实现Deepseek模型的高效部署。无需昂贵硬件&#xff0c;手把手教程涵盖环境配置、资源优化及避坑指南&#xff0c;助力初学者用极低成本在云端跑通行业领先的大…

Anaconda开始菜单里添加JupyterLab快捷方式

Anaconda开始菜单里添加JupyterLab快捷方式 在 Windows 系统安装 Anaconda 后&#xff0c;发现开始菜单只有 Jupyter Notebook&#xff0c;却找不到Jupyter Lab入口。其实这是因为最新版 Anaconda 默认未预装 Lab 组件&#xff0c;本篇介绍一种添加 Jupyter Lab入口到开始菜单…

解决Vmware 运行虚拟机Ubuntu22.04卡顿、终端打字延迟问题

亲测可用 打开虚拟机设置&#xff0c;关闭加速3D图形 &#xff08;应该是显卡驱动的问题&#xff0c;不知道那个版本的驱动不会出现这个问题&#xff0c;所以干脆把加速关了&#xff09;

【网络】Socket套接字

目录 一、端口号 二、初识TCP/UDP协议 三、网络字节序 3.1 概念 3.2 常用API 四、Socket套接字 4.1 概念 4.2 常用API &#xff08;1&#xff09;socket &#xff08;2&#xff09;bind sockaddr结构 &#xff08;3&#xff09;listen &#xff08;4&#xff09;a…

Baklib内容中台的核心定位是什么?

构建企业级知识中枢 在数字化转型趋势下&#xff0c;Baklib内容中台通过构建企业级知识中枢&#xff0c;实现了从碎片化信息到体系化资产的跃迁。其核心能力体现为对多源内容的智能聚合与结构化存储&#xff0c;支持从文档、图片到视频的全格式整合&#xff0c;并通过语义标签…

蓝耘平台API深度剖析:如何高效实现AI应用联动

目录 一、蓝耘平台简介 1.1 蓝耘通义大模型 1.2 蓝耘云计算资源 1.3 蓝耘API与微服务 二、 蓝耘平台应用联动场景 2.1 数据采集与预处理联动 2.2 模型推理与后端服务联动 2.3 跨平台联动 三、蓝耘平台注册体验功能 3.1 注册 3.2 体验蓝耘MaaS平台如何使用海螺AI生成视频…

《大语言模型赋能证券业开发安全:海云安技术方案在上交所专刊发表》

近日&#xff0c;海云安《大语言模型在证券业开发安全领域的探索与实践》技术方案经过上海证券交易所&#xff08;以下简称”上交所“&#xff09;行业专家评审后正式收录于《交易技术前沿——网络安全专刊&#xff08;2025年第1期 总第61期&#xff09;》。 证券信息技术研究…

将网络安全和第三方风险管理与业务目标相结合

在网络安全风险领域&#xff0c;我们经常遇到与企业语言不通的问题。这可能导致网络安全风险管理计划得不到支持。当发现网络安全风险时&#xff0c;困难在于以符合组织语言和目标的方式来表达它。 第三方风险属于另一个灰色地带。在组织内部&#xff0c;许多利益相关者&#…

使用Github项目nghttp3的样例学习HTTP/3

文章目录 前言一、HTTP3测试 in Ubuntu1.1. 基本软件1.2. gcc/g1.2.1. Ubuntu221.2.2. Ubuntu201.2.2.1. 必备库1.2.2.1.1. gmp1.2.2.1.2. mpfr1.2.2.1.3. mpc 1.2.2.2. 安装 1.3. libev > 4.11&#xff08;备用&#xff09;1.3.1. 安装1.3.2. 测试 1.4. nghttp31.5. ngtcp2…

2025清华大学:DeepSeek教程全集(PDF+视频精讲,共10份).zip

一、资料列表 第一课&#xff1a;Deepseek基础入门 第二课&#xff1a;DeepSeek赋能职场 第三课&#xff1a;普通人如何抓住DeepSeek红利 第四课&#xff1a;让科研像聊天一样简单 第五课&#xff1a;DeepSeek与AI幻觉 第六课&#xff1a;基于DeepSeek的AI音乐词曲的创造法 第…

容器C++

string容器 string构造函数 #include<iostream> using namespace std; #include<string.h> void test01() {string s1;//默认构造const char* str "hello world";string s2(str);//传入char*cout << "s2" << s2 << endl;s…

C++List模拟实现|细节|难点|易错点|全面解析|类型转换|

目录 1.模拟代码全部 2.四大块代码理解 1.最底层&#xff1a;ListNode部分 2.第二层&#xff1a;ListIterator部分 3.第三层&#xff1a;ReserveListIterator部分 4最终层&#xff1a;List 1.模拟代码全部 using namespace std; template<class T> struct ListNode …

【深度学习与实战】2.1、线性回归模型与梯度下降法先导

import numpy as np# 数据准备 X np.array([1, 2, 3]) y np.array([3, 5, 7])# 参数初始化 w0, w1 0, 0 alpha 0.1 n len(X)# 迭代10次 for epoch in range(10):# 计算预测值y_pred w1 * X w0# 计算梯度grad_w0 (1/n) * np.sum(y_pred - y)grad_w1 (1/n) * np.sum((y_…

sqlmap 源码阅读与流程分析

0x01 前言 还是代码功底太差&#xff0c;所以想尝试阅读 sqlmap 源码一下&#xff0c;并且自己用 golang 重构&#xff0c;到后面会进行 ysoserial 的改写&#xff1b;以及 xray 的重构&#xff0c;当然那个应该会很多参考 cel-go 项目 0x02 环境准备 sqlmap 的项目地址&…

vscode连接服务器失败问题解决

文章目录 问题描述原因分析解决方法彻底删除VS Code重新安装较老的版本 问题描述 vscode链接服务器时提示了下面问题&#xff1a; 原因分析 这是说明VScode版本太高了。 https://code.visualstudio.com/docs/remote/faq#_can-i-run-vs-code-server-on-older-linux-distribu…