news 2026/7/5 4:41:20

委托以及延伸

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
委托以及延伸

先写个最简单的委托的用法

静态的和非静态方法的

结果会输出

您好 wlf

Hello wlf

这是最原始的委托

2. 进化为匿名方法

声明完委托后 还要声明方法 是不是很麻烦 如果不声明方法 用匿名方法 可以帮我们 看 代码减少了很多吧~

3.再进化为拉姆达表达式

上面的虽然简单了不少 但是 还能更简单的 用拉姆达表达式~

看 这就是拉姆达表达式的演变 一定要会这个~ 因为在EF LINQ 等 有很多用拉姆达表达式的~

4.用Action 和Func继续简化

上面的代码以及很简单了 但是还有个很不爽的一点~ 要声明委托! 可以不声明么?当然可以~

先看 MSDN介绍 Action 和 Func

通俗的讲 这两个都是用来帮你声明委托

Action 用于帮你声明没用返回值的委托 Func则是有返回值的 最后一个参数为返回值

看~ 以前的版本 总是要声明一个HelloWorld 的委托 现在只有两行代码就可以了 下面顺便掩饰了有返回值的 func 的例子。第一个参数 是传递

参数的类型 第二个是返回值的类型 ~ 这里说下 这俩函数都有16个重载~ 所以多个参数是没问题的~

5.说说委托的好处

委托的好处 应用 文章开始已经说了很多了 这里就拿文章开头的例子 体会下委托的好处

当我们再多一种语言来问好时 只需增加一种Action 即可 而不需要改动 sayHello 方法 否则 这里将充满了 if else 的判断

6.工作里的应用

再 LINQ 或EF 里 都有 个很重要的 数据刷选的功能 WHERE 它的参数就是 Func 直接上代码 自己看注释~

看 可以很轻松的实现 数据过滤~ 喜欢这种函数式风格的编程方式 我们可以点 顺便介绍工作中的 Action

嗯 有图有真相~ 这个ForEach 的参数 正是Action 以后遇到这几个 新手们就不用再陌生了~

实现把集合里 大于4的打印出来的 这个功能 全部都是点儿出来的~

提示:尽量不要再ForEach 里进行集合的操作 比如 移除集合里的元素等~ 否则会出来不希望出现的结果~ 出来的结果为 2 4 6

原因 反编译 我们发现是 for 按索引删除

上面的话题扯远了~ 回归主题

二 .事件以及应用

1.先用委托来实现一个常见的工作场景(委托代替事件)

webForm 用户控件 我们在实际工作中 用的都是非常多的 说一个场景 一个用户控件 里面一个textbox 一个button 一个页面引用了

这个用户控件 这个页面里有一个label 我希望 点击 用户控件里的 button改变 把 textbox 里的值 绑定到 label 上 这就是一个典型的委托事件的

应用

1.直接上代码 先上用户控件的

声明一个委托 当点击按钮时 调用

2. 引用用户控件的页的代码

当然 我们会了拉姆达表达式 完全可以写成

这里主要说的是 委托的注册 记得要写到 !IsPostBack 外面

大概顺序是这样的 先执行 用户控件的外部变量赋值 => 再执行父页面的用外部变量赋值(本例子中没有)=> 再执行父页面的pageload=>用户控件的pageload

如果不写到 !IsPostBack 外面 点击按钮后 先执行 用户控件的外部变量赋值(以前被赋值的委托会又为空,所以这时需要在页面pageload 里 重新注册 而不能写到!IsPostBack) 里面~

3 只用委托的缺点

功能虽然实现了 但是我们想 我们可以在 父页面 给 Puchange.onChangevent 赋值为null 或者篡改为别的 而我希望我们在引用时 只能添加 或移除 这样就更

完美了 所以 事件就出来了~

2.使用事件重新实现上面的代码

1.用户控件里的

2.父页面

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 4:41:14

3分钟掌握Boss-Key老板键:一键隐藏窗口的终极隐私保护方案

3分钟掌握Boss-Key老板键:一键隐藏窗口的终极隐私保护方案 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在快节奏的职场环境…

作者头像 李华
网站建设 2026/7/5 4:40:21

2026企业级大文件传输加速:专业解决方案引领未来趋势

随着数字化转型的不断推进,企业对高效、安全且稳定的大文件传输解决方案的需求达到了前所未有的高度。面对日益增长的数据量和更加复杂的业务场景,如何确保文件传输的速度、稳定性和安全性成为了众多企业面临的挑战。在此背景下,北京直真科技…

作者头像 李华
网站建设 2026/7/5 4:39:34

春秋云境CVE-2021-42897(保姆级教学)

1.阅读靶场介绍这里我们可以得到的有用信息就是存在任意代码执行漏洞这里博主提前剧透一下博主是post一个报文,然后反弹shell去cat /flag带着思路我们直接进入靶场2.启动靶场我们会得到如下页面这个页面博主试过弱密码/空口令/爆破等等最后发现没有成功于是直接bp抓…

作者头像 李华
网站建设 2026/7/5 4:39:06

Masuit.Tools:一个 C# 工具库,把日常开发的脏活累活都包了

文章目录Masuit.Tools:一个 C# 工具库,把日常开发的脏活累活都包了Masuit.Tools:一个 C# 工具库,把日常开发的脏活累活都包了 Masuit.Tools 是一个 C# .NET 万能工具库,目前在 GitHub 上有 6k Star。 这个库的定位很明…

作者头像 李华
网站建设 2026/7/5 4:38:04

武汉潮酒派科技有限公司酒水超市

在当今竞争激烈的酒水零售市场,武汉潮酒派科技有限公司(以下简称“潮酒派”)凭借其独特的商业模式和创新的技术应用,正逐渐崭露头角,成为酒水超市领域的一股新势力。潮酒派在无人售货领域深耕多年,业务范围…

作者头像 李华
网站建设 2026/7/5 4:36:25

3小时从零部署MaiBot:打造属于你的AI数字生命伴侣

3小时从零部署MaiBot:打造属于你的AI数字生命伴侣 【免费下载链接】MaiBot MaiSaka, an LLM-based intelligent agent, is a digital lifeform devoted to understanding you and interacting in the style of a real human. She does not pursue perfection, nor d…

作者头像 李华