当前位置: 代码迷 >> 综合 >> 委托和事件(5)——委托使用案例:对Int数组进行过滤
  详细解决方案

委托和事件(5)——委托使用案例:对Int数组进行过滤

热度:9   发布时间:2023-10-01 22:21:00.0

对一个Int序列(IEnumerable<int>)进行过滤,返回满足要求的元素到新的序列中。

delegate bool FilterDelegate(int i);

static IEnumerable<int> Filter(IEnumerable<int> values, FilterDelegate query)

学了lambda用起来更简单。

============================================================

泛型 List。可以用foreach来遍历。

例:过滤掉所有负数。

            List<int> list1 = new List<int>();list1.Add(3);list1.Add(5);list1.Add(8);list1.Add(-9);list1.Add(300);List<int> list2 = new List<int>();foreach (int i in list1){if (i >= 0){list2.Add(i);}}foreach (int i in list2){Console.WriteLine(i);}Console.WriteLine("====过滤偶数====");List<int> list3 = new List<int>();foreach (int i in list1){if (i % 2 == 0){list3.Add(i);}}foreach (int i in list3){Console.WriteLine(i);}

这是常规的方法。

=========================================

委托的方法:

 public delegate void ProcessStringDelegate(string s);class Program{static void Main(string[] args){int[] values = { 3,5,8,-9,18,100,7};IEnumerable<int> values2 = Filter(values, FilterZhengZhengshu);foreach (int i in values2){Console.WriteLine(i);}Console.ReadKey();}static bool FilterZhengZhengshu(int i){return i > 0;}static IEnumerable<int> Filter(IEnumerable<int> values, FilterDelegate query){List<int> list = new List<int>();foreach (int i in values){if (query(i)){list.Add(i);}}return list;}}delegate bool FilterDelegate(int i);

C#是一个强类型的语言。 JavaScript是弱类型语言。

委托就是约束指向的函数的参数,不能瞎指。因为C#是强类型的

====================================================

JS中的所谓委托,例:

        function f1(name) {alert("你好"+name);}function f2(name) {alert("hello" + name);}var f = f1;f("tome");f = f2;f("jim");

 

  相关解决方案