C#,入门教程(20) | 您所在的位置:网站首页 › change用法视频讲解 › C#,入门教程(20) |
上一篇: C#,入门教程(19)——循环语句(for,while,foreach)的基础知识 List顾名思义就是数据列表,区别于数据数组(array)。 List比数组提供强大得多!多!多!多!的功能,能存储更多!多!多!类型的数据(泛型)! List是更多数据集合(序表SortedList、链表LinkedList、堆栈Stack、队列Quene及哈希表Hashtable等)的基础。 因而,可以说:无列表,不编程! 一、命名空间 using System.Text; using System.Linq; using System.Collections; using System.Collections.Generic;如果代码提示错误信息,先添加上面的这些命名空间。 if (入门 List ) { 本文就够了。 } else if (想精通 List ) { 请掌握 Linq 与 Lamda 表达式的基础知识。 } else { 关注我!无穷知识传给你! } 二、List的声明(定义) 1、List声明语法: List tList = new List();注:即为泛型,可以理解为任意的数据类型(数值、类、结构体、object及其他数据体)。 实例: List stringList = new List(); ListclassmateList = new List(); 2、List初值可以在声明一个List的同时,给出初值。 List stringList = new List() { "Tom", "Jerry", "!" }; List classmateList = new List() { new Classmate("1", "Tom"), new Classmate("2", "Jerry") }; 3、数组array转为List语法: List tList =new List (数据集);实例: string[] stringArray = { "Tom", "Jerry", "!" }; List stringList = new List(stringArray); //或者(Linq方法): List stringList = stringArray.ToList(); //反之: string[] stringArray = stringList.ToArray();![]() 语法:int List.Count() 实例:int count = stringList.Count(); 2、清空List语法:void List.Clear() 实例:stringList.Clear(); 必要的时候清空列表是好习惯! 3、List的遍历语法: // T的类型与mList声明时一样 string result = ""; foreach (T element in tList) { result += element.ToString(); }实例(制作同学花名册): List classmateList = new List(); //(因个人隐私需要,此处又省略。。。) StringBuilder sb = new StringBuilder(); sb.AppendLine(""); sb.AppendLine(""); sb.AppendLine("序号"); sb.AppendLine("昵称"); sb.AppendLine("姓名"); sb.AppendLine("手机号"); sb.AppendLine("邮箱"); sb.AppendLine(""); foreach (Classmate mo in classmateList) { sb.AppendLine(""); sb.AppendLine("" + mo.Id + ""); sb.AppendLine("" + mo.Nickname + ""); sb.AppendLine("" + mo.Name + ""); sb.AppendLine("" + mo.Mobile + ""); sb.AppendLine("" + mo.Email + ""); sb.AppendLine(""); } sb.AppendLine(""); 4、添加一个或一组数据语法:List.Add(T item) 语法:List.AddRange(数据集合) 注意:狗尾续貂,数据添加在尾部; 实例: List stringList = new List(); stringList.Add("Tom"); //或: string[] stringArray = { "Tom", "Jerry", "!" }; List firstStringList = new List(); firstStringList.AddRange(stringArray); //又或: List secondStringList = new List(); //(此处可能省略几句话。。。) stringList.AddRange(secondStringList); 5、按指定位置添加数据语法: Insert(int index, T item); 实例: List stringList = new List(); stringList.Insert(1, "House"); 6、删除元素① 按数据删除 语法:List.Remove(T item) ② 按位置删除 语法:List.RemoveAt(int index); ③ 批量删除 语法:List.RemoveRange(int index, int count); ④ 按条件删除 语法:List.RemoveAll(Predicate match) 方法:删除满足条件的所有元素。 实例: stringList.Remove("Tom"); stringList.RemoveAt(0); stringList.RemoveRange(1, 2); //(Lamda表达式) stringList.RemoveAll(t => t.Id > 10); 7、判断List是否包含某个数据?语法:List.Contains(T item) 返回:true 或 false 实例: string result = ""; if (mList.Contains("Tom")) { result = "Tom is in the list"; } else { result = "Tom is not in the list"; } 四、List的高级应用 1、List排序语法:List.Sort() 按数据的默认升序排序; stringList.Sort(); 这个实际上没有什么用处,强烈推荐下面的语法: 语法: tList.Sort(delegate(T a, T b) { return Comparer.Default.Compare(a.Hashcode(), b.Hashcode()); }); 实例(正序): classmateList.Sort(delegate(Classmate a, Classmate b)) { if(a.Id > b.Id) { return 1; } else { return -1; } }); //实例(倒序): classmateList.Sort(delegate(Classmate a, Classmate b)) { if(b.Id > a.Id) { return 1; } else { return -1; } }); //实例(倒序,简约写法): classmateList.Sort(delegate(Classmate a, Classmate b)) { return ((b.Id > a.Id) ? 1 : -1); }); //或者,实例(倒序,简约写法): classmateList.Sort(delegate(Classmate a, Classmate b)) { return Comparer.Default.Compare(b.Id, a.Id); });列表的排序是使用频率非常高的功能,应该熟练掌握! 2、List反转语法:List.Reverse() 3、List检索与批量检索① List.Find方法:检索满足条件的第一个元素; 语法:public List Find(Predicate match); ② List.FindAll方法:检索满足条件的所有元素; 语法:public List FindAll(Predicate match); ③ List.Where方法:检索满足条件的所有元素;(类似FindAll)。 语法:public List Where(Predicate match); ④ List.FindLast 方法:检索满足条件的最后一个元素; 语法:public T FindLast(Predicate match); 实例(推荐使用Lamda表达式): List someClassmateList = classmateList.Find(t => t.Mobile.StartsWith("139")); List someClassmateList = classmateList.FindAll(t => t.Mobile.StartsWith("139")); List someClassmateList = classmateList.Where(t => t.Mobile.StartsWith("139")); List someClassmateList = classmateList.FindLast(t => t.Mobile.StartsWith("139")); 4、List的片段提取语法:List.Take(int number); 方法:获得前number个数据,构成一个数据子集; List top3List = classmateList.Take(3); 一般先排序,再提取! —————————————————————— POWER BY 315SOFT.COM &TRUFFER.CN 下一篇: C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识 |
CopyRight 2018-2019 实验室设备网 版权所有 |