C# List列表用法详解(附带实例)
本节介绍 C# 中泛型的 List 类,它其实是泛型版本的 ArrayList,两者都是数组结构的数据,在连续的内存空间,不过 List 在数据元素的应用上更具弹性。
如果要创建 List 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
如果要创建 List 对象,同时设置初始值,则可以使用下列语法:
【实例 1】创建整型和字符串型的 List 对象,然后输出。
如果要创建 List 对象,同时将指定项目复制至此对象,可以使用下列语法:
此外,ICollection 是一个接口,这个接口继承 IEnumerable,这类集合的内容可以编辑修改。
【实例 2】创建 List 对象,同时将可以列举的数据复制至此对象,此例中可以列举的数据是指 books 字符串数组。
【实例 3】认识 Capacity 和 Count 属性。
【实例 4】Add()、Sort() 和 Reverse() 方法的应用。
C#创建List对象
如果只是创建 List 对象,则可以使用下列语法:List<T> 对象名称 = new List<T>();
如果要创建 List 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
List<T> 对象名称 = new List<T>(Int32);
如果要创建 List 对象,同时设置初始值,则可以使用下列语法:
List<int> 对象名称 = new List<int> { 系列初始值 }
【实例 1】创建整型和字符串型的 List 对象,然后输出。
List<int> sc = new List<int> { 5, 7, 9 }; foreach (var s in sc) Console.Write($"{s} "); Console.WriteLine(); // 换行输出 List<string> book = new List<string> { "Python", "C#" }; foreach (var b in book) Console.Write($"{b} "); Console.WriteLine(); // 换行输出 var cities = new List<string> { "Taipei", null, "Tainan" }; foreach (var c in cities) Console.Write($"{c} ");执行结果为:
5 7 9
Python C#
Taipei Tainan
如果要创建 List 对象,同时将指定项目复制至此对象,可以使用下列语法:
List<T> 对象名称 = new List<T>(IEnumerable<T>);注意,上述 IEnumerable 是源自 System.Collections 命名空间的接口,这个接口的定义是元素可以被迭代。所以在此 IEnumerable<T> 是指可以迭代的数据类型,均可当作指定项目复制到 List 对象名称内。
此外,ICollection 是一个接口,这个接口继承 IEnumerable,这类集合的内容可以编辑修改。
【实例 2】创建 List 对象,同时将可以列举的数据复制至此对象,此例中可以列举的数据是指 books 字符串数组。
string[] books = { "C语言入门教程", "C++基础教程", "Python基础教程" }; List<string> mybooks = new List<string>(books); foreach (string m in mybooks) { Console.WriteLine(m); }执行结果为:
C语言入门教程
C++基础教程
Python基础教程
C# List的属性
List 的常用属性如下:- Capacity:设定或是取得 List 对象的元素个数的容量;
- Count:获得 List 对象的元素个数。
【实例 3】认识 Capacity 和 Count 属性。
List<string> myList = new List<string>(); Console.WriteLine("输出空List变量的Capacity和Count属性"); Console.WriteLine(myList.Capacity); Console.WriteLine(myList.Count); Console.WriteLine("输出有数据List变量的Capacity和Count属性"); string[] books = { "C语言入门教程", "C++基础教程", "Python基础教程" }; List<string> mybooks = new List<string>(books); Console.WriteLine(mybooks.Capacity); Console.WriteLine(mybooks.Count);执行结果为:
输出空List变量的Capacity和Count属性
0
0
输出有数据List变量的Capacity和Count属性
3
3
C# List方法
List 的常用方法如下:方法名称 | 描述 |
---|---|
List<T>.Add(T) | 在对象末端增加元素。 |
List<T>.Insert(Int32, T) | 在对象指定索引位置插入元素。 |
List<T>.Contains(T) | 回传元素是否存在,如果存在则回传 true,反之则回传 false。 |
List<T>.Clear() | 清除所有元素。 |
List<T>.Remove(T) | 删除第一个相符的元素。 |
List<T>.RemoveAt(Int32) | 删除指定索引的元素。 |
List<T>.RemoveRange(Int32, Int32) | 删除指定范围的元素。 |
List<T>.IndexOf(T) | 回传元素第一次出现的索引。 |
List<T>.LastIndexOf(T) | 回传最后出现字符串的索引位置。 |
List<T>.Sort() | 元素排序。 |
List<T>.Reverse() | 元素反转排列。 |
【实例 4】Add()、Sort() 和 Reverse() 方法的应用。
List<int> number = new List<int>(); number.Add(10); number.Add(20); number.Add(5); Console.WriteLine("依据创建顺序输出"); foreach (int n in number) { Console.Write(n + " "); } Console.WriteLine("\n依据反向排列输出"); number.Reverse(); foreach (int n in number) { Console.Write(n + " "); } Console.WriteLine("\n依据排序输出"); number.Sort(); foreach (int n in number) { Console.Write(n + " "); }执行结果为:
依据创建顺序输出
10 20 5
依据反向排列输出
5 20 10
依据排序输出
5 10 20