博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
委托、Lambda表达式、事件系列02,什么时候该用委托
阅读量:5913 次
发布时间:2019-06-19

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

假设要找出整型集合中小于5的数。

 
static void Main(string[] args)
{
IEnumerable
source = new List
(){2, 3, 4, 5, 6, 7, 8, 9,10, 11};
 
var result = GetNumbersLessThanFive(source);
foreach (int n in result)
{
Console.WriteLine(n);
}
}
 
static IEnumerable
GetNumbersLessThanFive(IEnumerable
numbers)
{
foreach (int number in numbers)
{
if (number < 5) yield return number;
}
}
 

 

如果要找出整型集合中小于10的数,可能首先想到的是增加一个方法。

 
static IEnumerable
GetNumbersLessThanTen(IEnumerable
numbers)
{
foreach (int number in numbers)
{
if (number < 10) yield return number;
}
}

 

其实,GetNumbersLessThanFive方法和GetNumbersLessThanTen方法简直太像了,就if语句不一样。虽然if语句不一样,但逻辑是一样的:输入一个整型数,输出bool类型。这正是委托该登场的时候!

 

先声明一个委托,接收int类型参数,返回bool值。现在,if语句可以用委托来替代了,因为委托参数列表和返回类型与if语句吻合。

 
internal delegate bool MyCalculateDelegate(int val);
class Program
{
static void Main(string[] args)
{
IEnumerable
source = new List
(){2, 3, 4, 5, 6, 7, 8, 9,10, 11};
 
MyCalculateDelegate del = LessThanFive;
var result = GetNumbers(source,del);
foreach (int n in result)
{
Console.WriteLine(n);
}
}
 
static IEnumerable
GetNumbers(IEnumerable
numbers, MyCalculateDelegate del)
{
foreach (int number in numbers)
{
if (del(number)) yield return number;
}
}
 
static bool LessThanFive(int val)
{
return val < 5;
}
 
static bool LessThanTen(int val)
{
return val < 10;
}
}
 
 

可见,当多个方法有重复的部分,且输入类型一致,返回类型一致,就可以考虑使用委托了。   

 

“委托、Lambda表达式、事件系列”包括:

转载地址:http://ywmpx.baihongyu.com/

你可能感兴趣的文章
红包生成的模拟器2018今日头条秋招
查看>>
管道符和作业控制,shell变量和环境变量配置文件
查看>>
DirectX3D设备丢失(lost device)的处理(一)
查看>>
来自田野的回音——《背过身去的大娘娘》的读后感范文2600字
查看>>
LNMP架构 (Ⅱ)——nginx相关配置、nginx代理
查看>>
神级python程序员只需要一个公众号,再也不会错过重要资讯
查看>>
双十一流量洪峰 支撑阿里核心业务的云数据库揭秘
查看>>
OSChina 周一乱弹 ——程序员跟产品经理撕逼必须掌握的套路
查看>>
Linux系统启动流程详解
查看>>
我的友情链接
查看>>
Magento(CE1.X)自带模块解析五
查看>>
linux基础
查看>>
Factory Method模式 (一)
查看>>
java正则表达式的学习
查看>>
Linux 环境变量的配置解决(-bash: jps: command not found)问题
查看>>
redis遇到过的问题汇总(持续更新)
查看>>
组策略无法正常应用
查看>>
[转载]Monit:开源服务器监控工具
查看>>
Linux 打印 颜色显示
查看>>
dubbo请求调用过程分析
查看>>