对一个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");