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

东莞专业的网站制作有哪些wordpress集成微信支付

东莞专业的网站制作有哪些,wordpress集成微信支付,灵山建设局网站,微信小程序官网平台入口登录在 C# 中,委托(Delegate) 和 事件(Event) 是密切相关的概念,但它们的用途和行为有显著差异。以下是清晰的解释: 1. 委托(Delegate) 定义 委托是一种类型安全的函数指针…

在 C# 中,委托(Delegate)事件(Event) 是密切相关的概念,但它们的用途和行为有显著差异。以下是清晰的解释:


1. 委托(Delegate)

定义
  • 委托是一种类型安全的函数指针,用于封装一个或多个具有特定签名(参数和返回值)的方法。
  • 它允许将方法作为参数传递、存储或动态调用,支持多播(链式调用多个方法)。
核心特点
  • 类型安全:委托的声明必须与目标方法的签名完全匹配(参数类型、顺序、返回值)。
  • 多播能力:通过 +=-= 运算符,可以将多个方法绑定到同一个委托实例。
  • 直接调用权限:外部代码可以直接调用委托实例。
示例
// 定义委托类型
public delegate void LogHandler(string message);// 使用委托
LogHandler logger = Console.WriteLine;  // 绑定方法
logger += message => File.WriteAllText("log.txt", message);  // 多播
logger("Hello!");  // 直接调用,输出到控制台和文件

2. 事件(Event)

定义
  • 事件是对委托的封装,用于实现发布-订阅模式(Observer Pattern)。
  • 它限制了对委托的访问权限,确保外部代码只能订阅(+=)或取消订阅(-=),不能直接调用或覆盖委托链。
核心特点
  • 封装性:事件只能在声明它的类内部触发(通过 Invoke)。
  • 安全性:外部代码无法直接清空委托链(例如 event = null)或直接调用。
  • 设计意图:用于通知外部代码某个动作已发生(如按钮点击、数据更新)。
示例
public class Button
{// 定义事件(基于委托)public event EventHandler Clicked;// 触发事件的方法(只能在类内部调用)public void Press(){Clicked?.Invoke(this, EventArgs.Empty);}
}// 订阅事件
Button btn = new Button();
btn.Clicked += (sender, args) => Console.WriteLine("Button pressed!");
btn.Press();  // 输出 "Button pressed!"

3. 委托与事件的区别

特性委托(Delegate)事件(Event)
本质类型安全的函数指针,可存储多个方法对委托的封装,提供受控访问机制
调用权限外部代码可直接调用只能在声明类内部触发(如 Invoke
赋值操作允许直接赋值(如 handler = null外部只能通过 +=-= 操作
设计用途通用回调、动态方法调用实现安全的发布-订阅模式(如 GUI 事件)
默认访问控制无封装,直接暴露方法链隐藏底层委托的实现细节

4. 关键区别的代码体现

委托的直接调用与覆盖
public delegate void Notify();
Notify callback = () => Console.WriteLine("Callback 1");
callback();  // 直接调用
callback = () => Console.WriteLine("Callback 2");  // 直接覆盖
callback();  // 输出 "Callback 2"
事件的安全访问
public class Publisher
{public event Notify EventOccurred;public void TriggerEvent(){EventOccurred?.Invoke();  // 只能在类内部触发}
}Publisher pub = new Publisher();
pub.EventOccurred += () => Console.WriteLine("Event handled");
pub.EventOccurred = null;  // 编译错误!事件不允许直接赋值
pub.TriggerEvent();        // 输出 "Event handled"

5. 总结

  • 事件是一种特殊的委托实例
    事件底层依赖委托存储订阅的方法,但通过编译器限制外部访问权限。
  • 事件的设计目标是安全性
    防止外部代码随意触发或清空委托链,确保事件逻辑由声明类完全控制。
  • 适用场景
    • 使用 委托:需要灵活传递或动态调用方法时(如回调、插件架构)。
    • 使用 事件:需要对外暴露通知机制时(如用户交互、状态变更)。

通过合理使用委托和事件,可以编写出更安全、解耦的代码,尤其在事件驱动编程中,事件是核心构建块。


文章转载自:

http://s7KoeEkM.zwmjq.cn
http://1VzHp6yi.zwmjq.cn
http://MLjXb7ir.zwmjq.cn
http://lqj2sFew.zwmjq.cn
http://bhzWeAJ4.zwmjq.cn
http://JfkcAkpG.zwmjq.cn
http://iANSF5Vl.zwmjq.cn
http://3C4Nyl91.zwmjq.cn
http://KMe56aQN.zwmjq.cn
http://6Q5glu66.zwmjq.cn
http://UyY565Bc.zwmjq.cn
http://vZveZyqa.zwmjq.cn
http://IsBprBTA.zwmjq.cn
http://8pj01Uxf.zwmjq.cn
http://sfq7mrDt.zwmjq.cn
http://RimVUHpx.zwmjq.cn
http://92MLaSuQ.zwmjq.cn
http://PhHcyHhk.zwmjq.cn
http://uc6Mjgs8.zwmjq.cn
http://DKdyxh82.zwmjq.cn
http://bkWm3Pxt.zwmjq.cn
http://J7D90jXM.zwmjq.cn
http://OcDwLGLy.zwmjq.cn
http://WDYSkHa2.zwmjq.cn
http://ZdP49cGC.zwmjq.cn
http://jjlIwZkH.zwmjq.cn
http://MVPZPkS4.zwmjq.cn
http://zKQyNY1A.zwmjq.cn
http://yD3Nc4s8.zwmjq.cn
http://1EMxFmUy.zwmjq.cn
http://www.dtcms.com/wzjs/691554.html

相关文章:

  • 台州网站快速优化排名用什么工具做网站
  • 网站备案流程核验单企业信息公开查询
  • 买完域名接下来怎么弄百度刷排名seo软件
  • 网站框架设计好后怎么做百度商桥网站加不上
  • 沈阳世纪兴网站制作学生个人网页制作图片
  • 微网站建设第一步是进行什么的设置建设网站的运行费包括什么
  • 广州企业做网站一流的网站建设哪家好
  • 企业网站的优化app运营方式
  • 网站开发 问题解决住房城乡建设部网站文件查询
  • 榆林市建设局官方网站二手书的网站建设
  • 杭州设计 公司 网站saas平台是干嘛的
  • 有哪些网站可以做ps挣钱怀化网络营销
  • 用网站做的简历网站做好了每年都要续费吗
  • 网站开发前台实训网站icp申请
  • php做购物网站详情页的代码分工做网站如何
  • 网站seo评测做爰免费网站
  • 网站建设与网页设计可行性分析报告域名注册好如何做网站
  • 汕头市网站建设公司美肤宝网站建设
  • 广东商城网站建设公司wordpress环境需求
  • 做门户网站广告遵义建一个网站大概要多少钱
  • 吉林省建设厅官方网站办事指南网站建设简述
  • 长沙百度网站快速排名江苏建设教育网官网
  • 工商注册网站鄞州区卖场设计网站建设
  • 网站开发公司外包网络空间设计方案
  • 做网站文字编辑累吗如何做网站需求
  • 做外商备案的网站p2p网站设计
  • 58同城青岛网站建设网站建设后期出现的问题
  • 厦门做网站哪家公司好海南省海口市
  • wordpress 图站怎样做淘客网站
  • 网站做支付需要准备什么东西吗网站制作入门