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

合肥企业自助建站天津港电子商务信息网

合肥企业自助建站,天津港电子商务信息网,怎么让百度收录,运营推广计划表定义与本质‌ ‌委托‌: 委托是一种类型,用于存储对方法的引用。它允许将方法作为参数传递、存储和调用。委托可以绑定一个或多个方法,并通过和-操作符动态添加或移除方法。‌ ‌事件‌: 事件是基于委托的封装,提供了一种发布/订阅机制。事件…
  1. 定义与本质‌
    ‌委托‌: 委托是一种类型,用于存储对方法的引用。它允许将方法作为参数传递、存储和调用。委托可以绑定一个或多个方法,并通过+=和-=操作符动态添加或移除方法。‌
    ‌事件‌: 事件是基于委托的封装,提供了一种发布/订阅机制。事件是特殊的委托,限制了外部代码对委托的直接访问和修改,只能通过+=和-=操作符订阅或取消订阅。‌
  2. ‌可访问性‌
    ‌委托‌: 委托对象是公开的,任何持有委托实例的代码都可以直接调用它所绑定的方法。
    ‌事件‌: 事件的委托实例仅能由定义事件的类触发,外部代码只能订阅或取消订阅,不能直接触发事件。
  3. 修改与触发‌
    ‌委托‌: 委托的实例可以随时被修改和触发。外部代码可以通过赋值的方式将不同的方法绑定到同一个委托上,也可以直接调用这些方法。
    ‌事件‌: 事件的委托实例不能直接修改。订阅者不能更改事件所绑定的委托对象,只能添加或移除事件处理程序。事件只能由定义事件的类触发。
  4. 目的与使用场景‌
    ‌委托‌: 委托常用于回调函数、异步编程、方法参数传递等场景。它允许在运行时动态调用不同的方法。‌
    ‌事件‌: 事件用于实现发布-订阅模式,通常用于通知多个订阅者某个事件的发生。例如,按钮点击事件、文件上传完成事件等。
  5. 封装与安全性‌
    ‌委托‌: 委托的封装性较低,外部代码可以直接访问和修改委托实例,可能导致安全性问题。
    ‌事件‌: 事件通过封装委托实例,提供了更高的安全性,确保外部代码不能直接修改或触发事件。

‌委托‌是一种灵活的方法引用机制,适用于需要动态调用方法的场景;而‌事件‌是基于委托的封装,提供了更安全的发布/订阅机制,适用于需要通知多个订阅者的场景。理解它们的区别有助于在C#编程中更合理地选择和使用这两种机制。

了解Action<T1,T2>与Func<T1,T2>的区别,首先要清楚有哪些常用的委托类型
委托类型

  1. Action:代表不返回值的方法。可以接受最多 16 个参数。
Action<string> printMessage = Console.WriteLine;
printMessage("Hello");
  1. Func:代表有返回值的方法。最多接受 16 个参数,第一个参数是输入参数,最后一个参数是返回值类型。
Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(3, 4));  // 输出 7
  1. Predicate:代表返回 bool 值的方法,通常用于条件判断。
Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(5, 3));  // 输出 8

‌Action<T1,T2>与‌Func<T1,T2>的主要区别在于它们所指向的方法是否有返回值。‌Action<T1,T2>‌用于指向那些没有返回值的方法,而‌Func<T1,T2>‌用于指向那些有返回值的方法。

定义和用法
‌Action<T1,T2>‌:这是一个委托类型,用于指向那些没有返回值的方法。它的签名是void Action<T1, T2>(T1 arg1, T2 arg2),表示这个委托可以指向接受两个参数且没有返回值的方法。
‌Func<T1,T2>‌:这是一个泛型委托类型,用于指向那些有返回值的方法。它的签名是TResult Func<T1, T2>(T1 arg1, T2 arg2),表示这个委托可以指向接受两个参数并返回一个结果的方法。
使用场景
‌Action<T1,T2>‌适用于那些不需要返回结果的操作,例如事件处理、日志记录等。
‌Func<T1,T2>‌适用于那些需要返回结果的操作,例如计算、转换等。
示例代码:

// 使用Action<int, int>的示例
Action<int, int> action = (a, b) => {Console.WriteLine($"The sum is {a + b}");
};
action(5, 3); // 输出: The sum is 8// 使用Func<int, int, int>的示例
Func<int, int, int> func = (a, b) => {return a + b;
};
int result = func(5, 3); // result为8
Console.WriteLine($"The sum is {result}"); // 输出: The sum is 8
http://www.dtcms.com/wzjs/579837.html

相关文章:

  • 苏州做网站专业的公司陕西新闻最新消息
  • 北海网站设计公司3秒做一个盲盒
  • 电梯网站建设纪念馆网站建设方案
  • 我要自学网做网站江西省建设网站
  • 合肥专业做网站公司有哪些如何套用网站模板
  • 山东省德州禹城住房建设厅网站黄骅做网站_黄骅昊信科技|黄骅网站|黄骅网站开发|黄骅微信|黄骅
  • 网站设计应该怎么做powershell做网站
  • 泉州市建设系统培训网站电子商务网站登录
  • 安丘做网站wordpress 图片剪裁
  • 企业网站建立流程企业宣传片制作软件
  • 互联网网站样式中国石家庄网站
  • 福州专业网站制作公司三亚用什么软件约
  • 杭州专业建设网站哪里好合肥品牌seo
  • 中专网站建设与管理就业前景婚恋网站应聘做销售
  • 杭州seo网站排名优化软件定制网站建设
  • django 企业网站开发什么牛网站建设
  • ppt模板免费下载哪个网站好什么是网站名称文件夹
  • 响应式中文网站欣赏网络科技公司的经营范围有哪些
  • 5星做号宿水软件的网站黄页88网怎么推广
  • 动漫设计专升本考哪些为网站做seo
  • 网站排名不稳定怎么办培训机构连锁加盟
  • 沈阳网站建设培训龙岗区建设规划网站
  • 上海建设人才网站网站改版流程
  • 做网站 信科网站建设便宜平昌移动网站建设
  • 网络平台维护是什么工作东莞网络推广及优化
  • 网站建设一个下载链接商务网站推广技巧包括什么
  • 做整装的网站邯郸网站制作哪家好
  • 怎么免费给自己建网站仿礼物说网站模板
  • 网站专业制作软件自学网站
  • 搭建网站怎么赚钱营口旅游网站建设