c#委托 与多播委托delegate +=
来源:互联网 发布:兄弟网络论坛 编辑:程序博客网 时间:2024/05/24 04:26
一 委托
委托又叫匿名函数, 首先我们来说为什么要使用委托 ,委托到底是什么 举一个例子
我想求链表里少于10的数的和,(getSum)
static int getSum(List<int> list)
{
int sum = 0;
foreach (var num in list)
{
if (num<10)
{
sum += num;
}
}
return sum;
}
我又想求链表里所有奇数的和,那么是否是又要写一个函数getSum2()来求呢
static int getSum2(List<int> list)
{
int sum = 0;
foreach (var num in list)
{
if (num%2!=0)
{
sum += num;
}
}
return sum;
}
到此大家有没有觉得很繁琐 如果要是 将n<10 n%2!=0封装成参数多好,这样就只用写一个函数就通过改变参数就可以实现 求不同元素标准的和了 委托就是为了实现这样一个目的 实现这样的形式
getSum(list<int> list Function function)
{
int sum = 0;
foreach (var num in list)
{
if (function(参数))
{
sum += num;
}
}
return sum;
}
举一个具体的例子
//定义委托
delegate bool Function(int i);
//少于10的函数的委托
static Function smallerThan10 = delegate (int i) { return i < 10; };
//求偶数的函数委托
static Function OuShu=delegate(int i){ return i % 2 != 0; };
static int getSum(List<int> list,Function function)
{
int sum = 0;
foreach (var num in list)
{
if (function(num))
{
sum += num;
}
}
return sum;
}
这样求解集合list中小于10的元素的和 就变成下面这样
var list = new List<int>() { 1, 2, 3, 4, 90 };
//实现了函数的封装了吧
int sun=getSum(list,smallerThan10);
求元素是奇数的和 就变成下面这样
int sum = getSum(list,OuShu);
实现了函数的参数封装 太棒啦
二 ,多播委托
static Action<int> addPrint = i => { i++; Console.Write(i); };
static Action<int> print = delegate (int i) { Console.Write(i); };
在主函数中这样写
all=addPrint;
all += print;
all(1);
打印出 2 1
多播委托就是将多个委托加入一个委托链表
- c#委托 与多播委托delegate +=
- C#多播委托(Multicast Delegate)
- C#自学(一)委托(delegate)、委托泛型、多播委托
- C# 多播委托
- C#多播委托
- c# delegate(委托)与多线程
- C# Delegate(委托)与多线程
- C# Delegate(委托)与多线程
- C# Delegate(委托)与多线程
- C# Delegate/委托 与多线程
- C# Delegate/委托 与多线程
- C# Delegate(委托)与多线程
- C# Delegate(委托)与多线程
- C# Delegate(委托)与多线程
- C# Delegate/委托 与多线程
- C# Delegate(委托)与多线程
- C# Delegate(委托)与多线程
- c# 委托和多播委托
- div+css 关于文字居中
- Matlab feval和eval函数
- 对代码规范性的一点切实感受
- linux 抓包命令
- html以及css和js注释的方式以及作用
- c#委托 与多播委托delegate +=
- Python学习-Linux操作相关(一)
- PHP最佳实践之数据库
- Netty之私有协议栈开发
- HDR
- PHP最佳实践之多字节字符串、字符编码
- Linux学习(二)
- 网络态势感知系统
- Redis.conf