C#五、(委托的用法和为什么需要委托?)
发布日期:2021-06-30 10:18:13 浏览次数:2 分类:技术文章

本文共 2701 字,大约阅读时间需要 9 分钟。

问 题 一 、 写 一 个 函 数 , 参 数 是 一 个 L i s t \color{Red}问题一、写一个函数,参数是一个List ,List

返 回 其 中 大 于 10 的 元 素 并 装 成 一 个 L i s t 返 回 返回其中大于10的元素并装成一个List返回 10List

这 个 简 单 呀 这个简单呀

static List
Maxx(List
nums){ List
a = new List
(); foreach (int num in nums) if (num > 10) a.Add(num); return a;}

问 题 二 、 写 一 个 函 数 , 参 数 是 L i s t \color{Red}问题二、写一个函数,参数是List List

返 回 其 中 是 偶 数 的 数 , 组 成 一 个 L i s t 返 回 返回其中是偶数的数,组成一个List返回 ,List

static List
Maxx(List
nums){ List
a = new List
(); foreach (int num in nums) if (num % 2 ==0 ) a.Add(num); return a;}

然后发现这两个函数很相似,就是这个逻辑不同而已

if (num > 10) a.Add(num);        if (num % 2 ==0 ) a.Add(num);

那我们利用委托,就可以把这些多个相似的函数封装成一个

Ⅰ . 声 明 委 托 \color{Red}Ⅰ.声明委托 .

delegate bool most_function(int num);

其中delegate是委托的关键字

bool是委托要返回的类型(这里用于if的逻辑,所以是bool)

most_function是委托函数的名字,随便取吧

Ⅱ . 编 写 委 托 函 数 \color{Red}Ⅱ.编写委托函数 .

下 面 分 别 用 实 现 了 大 于 10 和 返 回 偶 数 的 功 能 下面分别用实现了大于10和返回偶数的功能 10

static most_function GreaterThan10 = delegate (int n) { return n > 10; };static most_function is_even = delegate (int n) { return n%2==0 ; };

most_function可以看成数据类型

GreaterThan10可以看成变量名

后面的表达式就照着most_functoin的定义去自己写

三 、 在 函 数 中 传 入 编 写 的 委 托 函 数 \color{Red}三、在函数中传入编写的委托函数

这 一 步 比 较 简 单 , 直 接 看 完 整 代 码 吧 这一步比较简单,直接看完整代码吧 ,

class Program{    delegate bool most_function(int num);    static most_function GreaterThan10 = delegate (int n) { return n > 10; };    static most_function is_even = delegate (int n) { return n%2==0 ; };    static List
Maxx(List
nums,most_function S) { List
a = new List
(); foreach (int num in nums) if ( S(num) ) a.Add(num); return a; } static void Main(string[] args) { List
a = new List
() { 1, 2, 3, 999, -1, 4,11 }; a = Maxx(a,is_even); foreach (int num in a) Console.WriteLine(num); }}

我的理解就是委托的功能之一就是

能 封 装 函 数 , 并 作 为 参 数 传 进 函 数 中 去 能封装函数,并作为参数传进函数中去 ,

再 看 一 下 我 们 写 的 委 托 函 数 以 及 调 用 代 码 再看一下我们写的委托函数以及调用代码

static most_function is_even = delegate (int n) { return n%2==0 ; };List
a = new List
() { 1, 2, 3, 999, -1, 4,11 };a = Maxx(a,is_even);

实 际 上 使 用 l a m b d a 表 达 式 更 简 洁 实际上使用lambda表达式更简洁 使lambda

List
a = new List
() { 1, 2, 3, 999, -1, 4,11 }; a = Maxx(a, (n) => { return n % 2 == 0; });

()内是委托函数的参数

{}内是函数的语句

其实还是在构造这个委托函数,不过简化了一些

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/107291795 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:树链剖析板子(P3384 【模板】轻重链剖分)
下一篇:C. Journey(拓扑dp)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月30日 06时50分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

神经网络调参实战(四)—— 加深网络层次 & 批归一化 batch normalization 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(1)—— 假设检验(μ&卡方检验&方差检验(F检验))&相关系数(皮尔逊&斯皮尔曼) 2019-04-30
RRT算法(快速拓展随机树)的Python实现 2019-04-30
路径规划(二) —— 轨迹优化(样条法) & 局部规划(人工势能场法) & 智能路径规划(生物启发(蚁群&RVO) & 强化学习) 2019-04-30
D*算法 2019-04-30
强化学习(四) —— Actor-Critic演员评论家 & code 2019-04-30
数据挖掘与数据分析(二)——探索性数据分析EDA(单因子与对比分析) & 可视化(2)—— 数据分类(定类定序定距定比)&单属性分析(异常值分析&对比分析&结构分析&分布分析) 2019-04-30
Paper reading —— End-to-End Learning of Geometry and Context for Deep Stereo Regression(GC-Net ) 2019-04-30
Node-Red(二)——节点功能介绍 2019-04-30
Node-Red相关操作 2019-04-30
Python npy文件 2019-04-30
RESTful API 2019-04-30
优化算法(四)——粒子群优化算法(PSO) 2019-04-30
数据挖掘与数据分析(三)—— 探索性数据分析EDA(多因子与复合分析) & 可视化(2)——回归分析(最小二乘法&决定系数&残差不相关)&主成分分析&奇异值分解 2019-04-30
数据在Oracle中的存储 2019-04-30
优化算法(五)—人工蜂群算法Artificial Bee Colony Algorithm(ABC) 2019-04-30
轨迹规划 trajectory planning 2019-04-30
AGV自动导引运输车 2019-04-30
Trie树(字典树) 2019-04-30
COMP7404 Machine Learing——绘制数据点 2019-04-30