C#泛型集合List<T>用法总结

List<T>在C#应用程序中是一种快捷、易于使用的泛型集合类型,使用泛型编程为编写面向对象程序增加了极大的效率和灵活性,不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换。

补充说明:

在决定使用IList<T> 还是使用ArrayList类(两者具有类似的功能)时,记住IList<T> 类在大多数情况下执行得更好并且是类型安全的。

如果对IList<T> 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。

“添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。”

一、List<T>的基本用法:
1.  创建List<T>类具体实例:
1.1、 创建一个普通的泛型集合类:

1
List<T> mList = new List<T>();
T为列表中元素类型,现在以string类型作为例子

1
List<string> mList = new List<string>();
1.2、 以一个集合作为参数创建新的泛型集合List<T>

1
List<T> testList =new List<T> (IEnumerable<T> collection);
下面是一个具体的例子:

1
2
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };
List<string> testList = new List<string>(temArr);
2. 增加元素到List<T>:
2.1、 添加一个元素:

1
List. Add(T item)
示例:

1
testList.Add("John");
2.2、 添加一组元素集合:

1
List. AddRange(IEnumerable<T> collection)
示例:

1
2
string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku",  "Locu" };
testList.AddRange(temArr);
2.3、在指定位置添加一个元素:

1
Insert(int index, T item);
其中,index指定了要添加元素的位置,示例:

1
testList.Insert(1, "Hei");
3. 泛型集合List<T>元素遍历:
使用foreach可以轻松遍历List<T>中的所有元素,示例:

1
2
3
foreach (string s in mList){
    Console.WriteLine(s);
 }
4. 删除List<T>中的元素:
4.1、 删除单个元素:

List. Remove(T item)
item指定了要删除元素的对象,示例:

mList.Remove("Hunter");
4.2、 删除指定位置的元素:

List.RemoveAt(int index);
其中,index指定了要删除元素的索引值,示例:

mList.RemoveAt(0);
4.3、 删除多个元素:

List.RemoveRange(int index, int count);
index指定了删除元素的起始位置,count指定了从起始位置开始需要删除元素的个数,示例:

mList.RemoveRange(3, 2);
5. 判断某个元素是否在该List<T>中:
List.Contains(T item)
该方法用于确定某元素是否在 List<(Of <(T>)>) 中,如果在 List<(Of <(T>)>) 中找到 item,则为 true,否则为 false,示例:

if (mList.Contains("Hunter")){
    Console.WriteLine("There is Hunter in the list");
}else{
    mList.Add("Hunter");
    Console.WriteLine("Add Hunter successfully.");
}
6. 给List<T>里面元素排序:
List.Sort ()
该方法将集合类List<T>中的元素按照 默认的方式元素第一个字母升序排序。

mList.Sort();
7. 给List<T>里面元素顺序反转:
List.Reverse ()
该方法可以与List. Sort ()配合使用,以达到想要的效果。

mList.Sort();
8. 清空List<T>中的所有元素:
List.Clear ()
该方法将清空List<T>中的所有元素,示例:

mList.Clear();
9.  获得List<T>中元素数目:
List. Count ()
该方法返回List<T>中元素个数的int类型值,示例:

int count = mList.Count();
Console.WriteLine("The num of elements in the list: " +count);
时间: 2024-10-13 22:47:32

C#泛型集合List<T>用法总结的相关文章

机房重构——泛型集合

敲三层的时候就听师傅说过泛型,只不过当时没有特别的注意.当敲用户登录窗体时,我遇到这样的问题,就是我们需要经过验证输入的信息的正误之后才能登录或者不能登录.判断时,需要返回我们从数据库中查到的信息,那么问题就来了,如何返回呢? 一开始我一直用的是DataTable返回数据的,但是当去判断的时候我不知道如何下手了,按照以往的经验,我们可以使用table.rows()或table.field(),具体的实现方法可以自己试验一下.这种方法虽然可以实现,可是里面重复的内容太多了,尤其是每次使用一个字段时

C#—类库、委托、is和as运算符、泛型集合

类库 类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口.抽象类和具体类.类库可以解决一系列常见编程任务(包括诸如字符串管理.数据收集.数据库连接以及文件访问等任务),还可以解决多种专用开发任务(控制台应用程序.桌面应用程序.WEB应用程序等). 优点:保密性好,用户无法看到方法结构体 缺点:如果这个方法不好用,使用者无法自己去更改它. 鼠标放在类上按下F12可以查看程序集 1.创建类库 类库创建完成,它默认public,并且没有主函数,无法进行启动,它

C#中数组、集合(ArrayList)、泛型集合List&lt;T&gt;、字典(dictionary&lt;TKey,TValue&gt;)全面对比

为什么把这4个东西放在一起来说,因为c#中的这4个对象都是用来存储数据的集合--. 首先咱们把这4个对象都声明并实例化一下: //数组 string[] m_Str = new string[5]; //集合 ArrayList m_AList = new ArrayList(); //泛型集合 List<int> m_List = new List<int>(); //字典 Dictionary<int, string> m_Dt = new Dictionary&l

C#各种泛型集合体验

本篇体验除Queue<T>和Stack<T>之外的其它泛型集合. SortedList<TKey, TValue> SortedList<TKey, TValue>和List<T>比较相似,不同的地方在于SortedList集合元素是排过序的,往SortedList集合添加元素的时候需要添加键值对数据.在添加集合元素的时候,首先采用"二分查找算法"找到合适的位置,然后元素被放到该位置,该位置后面所有的集合元素整体后退一位. s

类库,委托,is和as运算符,泛型集合

类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debug文件夹下找到dll文件 委托:委托可以理解为:函数的指针 关键词:delegate 声明委托类型:public delegate int FirstDel(int a, int b); FirstDel不是类,是委托变量,不能实例化(不能new), 创建委托变量:FirstDel 名字 = 与这个

DataSet装换为泛型集合 222

#region DataSet装换为泛型集合 /// <summary> /// 利用反射和泛型 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static List<T> ConvertToList<T>(DataTable dt) { // 定义集合 List<T> ts

面向对象--类库、委托、is和as运算符、泛型集合

类库: 其实就是一堆类文件,只是看不到这些类的源代码,保密性好. 优点:保密性好 缺点:如果这个方法不好用,使用者无法自己去更改它. 给的大多是dll文件.使用方法:引用右键,添加引用,浏览,选择到相应的dll文件,确定.然后在开头加上 [using 命名空间名字] 委托: 委托可以理解为函数的指针. 关键词:delegate 声明:public delegate int FirstDel(int a, int b); 创建委托变量:FirstDel 名字 = 与这个委托类型相同的方法; 在cl

数据模型和数据访问类以及属性扩展和泛型集合

数据模型: 数据模型就是将一个表中一行的所有属性利用封装写到一个类里面,将数据表中的行数据组成一个同样结构的对象,方便使用. 1 public class Car 2 { 3 SqlConnection conn = null; 4 SqlCommand com = null; 5 public Car() 6 { 7 conn = new SqlConnection("server=.;database=ADOlianxi0425;user=sa;pwd=123;"); 8 com

C#泛型集合与非泛型集合_Felix(转自新浪博客)

在.NET FCL为我们提供了很多集合类型,是编程中非常有力的工具.泛型集合主要在System.Collections.Generic名称空间中,而非泛型集合主要在System.Collections,首先抛出结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类.因为,1.泛型编程是从c#2.0开始才被.net支持的.2.泛型集合在性能和类型安全方面优于非泛型集合. 非泛型集合-System.Collections名字空间中的类主要包括ArrayList, Hashtable