class Program { static void Main(string[] args) { Getdata(); Console.ReadKey(); } private static void Print(string s) { Console.WriteLine(s); } public static bool ListFind(string name) { if (name.Length > 3) { return true; } return false; } public static void Getdata() { // 泛型委托 string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" }; List<string> mList = new List<string>(temArr); #region 一,Predicate<T>委托 #region List.Find()方法 返回T // 委托给拉姆达表达式 string listFind = mList.Find(name => { if (name.Length > 3) { return true; } return false; }); Console.WriteLine(listFind); // 委托给方法 listFind = mList.Find(ListFind); // List.Find(条件方法) 返回匹配元素的第一个元素; Console.WriteLine(listFind); // 解释: // Find(Predicate<T> match);适合匹配集合外部条件; // Predicate 可以委托给一个函数或者一个拉姆达表达式 // List.FindAll()返回List<T>即指定谓词所定义的条件相匹配的所有元素; #endregion #region List.Take()方法 返回List<T> Console.Clear(); IEnumerable<string> takeList = mList.Take(5);//返回指定数量的连续元素; foreach (string s in takeList) { Console.WriteLine(s); } // 解释: // Find(Predicate<T> match);适合匹配集合外部条件; // Predicate 可以委托给一个函数或者一个拉姆达表达式 // List.FindAll()返回 指定谓词所定义的条件相匹配的所有元素; #endregion #region List.Where() 返回List<T> //List.Where方法:返回List<T> //检索与指定谓词所定义的条件相匹配的所有元素 //跟 List.FindAll 方法类似。 #endregion #region List与数组转换 // 数组》》List string[] aStr = { "a", "b" }; List<string> list = new List<string>(aStr); // List >>数组 // .ToArray() #endregion #endregion #region 二,Action<T> 委托 》List.ForEach() Console.Clear(); List<String> names = new List<String>(); names.Add("Bruce"); names.Add("Alfred"); names.Add("Tim"); names.Add("Richard"); names.ForEach(Print);//ForEach(Action<T> action) 对names每个元素执行.Action<T> 委托;无返回值; names.ForEach(delegate(String name) { Console.WriteLine(name); }); #endregion #region 三,Func<T,...,TResult> 委托 》arrary.Select() //示例演示如何声明和使用 Func<T, TResult> 委托 //此示例声明一个 Func<T, TResult> 变量,并为其分配了一个将字符串中的字符转换为大写的 lambda 表达式。 //随后将封装此方法的委托传递给 Enumerable.Select 方法,以将字符串数组中的字符串更改为大写。 Console.Clear(); Func<string, string> selector = str => str.ToUpper(); string[] words = { "orange", "apple", "Article", "elephant" }; IEnumerable<String> aWords = words.Select(selector);//Func<TSource, TResult> selector foreach (String word in aWords) Console.WriteLine(word); #endregion } }