C#之委托
委托,第一次接触的时候觉得好难,果断跳过,真是躲得过初一躲不过十五,现在还是得学。
委托,顾名思义,应该就是“为了方便,把一些事情委托给别人去做”,最近看了《医馆笑传》,所以就拿它举个例子吧,同舟会为了推翻大明朝,所以就委托了许多杀手去谋害皇帝,委托了宫女在御用的冰块上投毒来杀害皇帝,也委托了万贞儿(万妃)统领后宫来杀害所有的皇子,继而毁掉龙脉等等,可以说,委托嘛有一种“借刀杀人”的意思,在C#里同样也有这种意思,“借多把刀杀多个人”。
1、普通方式
有一个int类型的List,我想知道里面大于0的有哪些,是偶数的又有哪些,所以就有了如下代码
List<int> list = new List<int>(); list.Add(1); list.Add(-1); list.Add(2); list.Add(-2); list.Add(3); list.Add(4); list.Add(5); List<int> list1 = new List<int>(); foreach (var item in list) { if (item > 0) list1.Add(item); } List<int> list2 = new List<int>(); foreach (var item in list) { if (item % 2 == 0) list2.Add(item); } foreach (var item in list1) { Console.WriteLine(item); } Console.WriteLine("---------------------------"); foreach (var item in list2) { Console.WriteLine(item); } Console.ReadLine();
2、委托方式
如果我想知道奇数是哪些?1到10之间的有哪些,不能每次有一个想法,就都得写一个循环然后判断一下吧,所以就想到了委托(借多把刀杀多个人),so。。。
class Program { static void Main(string[] args) { List<int> list = new List<int>(); list.Add(1); list.Add(-1); list.Add(2); list.Add(-2); list.Add(3); list.Add(4); list.Add(5); foreach (var item in GetList(list, GetZheng)) { Console.WriteLine(item); } Console.WriteLine("---------------------------"); foreach (var item in GetList(list, GetOu)) { Console.WriteLine(item); } Console.ReadLine(); } static List<int> GetList(List<int> list, FilterDelegate fd) { List<int> list3 = new List<int>(); foreach (var item in list) { if (fd(item)) list3.Add(item); } return list3; }
//得到正整数
static bool GetZheng(int i)
{
return i > 0;
}
//得到偶数 static bool GetOu(int i) { return i % 2 == 0; } }
delegate bool FilterDelegate(int i);
轻而易举的就解决了问题,
委托就是把要实现的功能(一个方法)交给别人(声明的委托)去做。
浙公网安备 33010602011771号