C# List(列表)

List <T>是強類型對象的集合,可以通過索引對其進行訪問,并具有用于排序,搜索和修改列表的方法。 它是System.Collection.Generic命名空間下的ArrayList的泛型版本。

List <T>特性

  • List<T> 等效于ArrayList,它實現(xiàn)了IList <T>。

  • 它在System.Collection.Generic命名空間下。

  • List<T>可以包含指定類型的元素。它提供編譯時類型檢查,并且不執(zhí)行裝箱/拆箱,因為它是泛型的。

  • 可以使用Add(),AddRange()方法或collection-initializer(集合初始化器)語法添加元素。

  • 可以通過傳遞索引來訪問元素,例如myList[0]。索引從零開始。

  • List<T>與ArrayList相比,執(zhí)行速度更快,出錯更少。

創(chuàng)建List

List<T>是一個泛型集合,所以你需要指定它可以存儲的數(shù)據(jù)類型的類型參數(shù)。以下示例顯示了如何創(chuàng)建列表和添加元素。

List<int> primeNumbers = new List<int>();
primeNumbers.Add(1); // 使用add()方法添加元素
primeNumbers.Add(3);
primeNumbers.Add(5);
primeNumbers.Add(7);

var cities = new List<string>();
cities.Add("New York");
cities.Add("London");
cities.Add("Mumbai");
cities.Add("Chicago");
cities.Add(null);// 引用類型列表允許為null

//使用collection-initializer語法添加元素
var bigCities = new List<string>()
                    {
                        "New York",
                        "London",
                        "Mumbai",
                        "Chicago"                    
                    };

在上面的示例中,

List<int> primeNumbers = new List<int>();

創(chuàng)建int類型的列表。同樣,cities 和 bigcity是字符串類型的 List。然后可以使用add()方法或集合初始值設(shè)定項語法在列表中添加元素。

還可以使用集合初始化器(collection-initializer)語法添加自定義類的元素。下面示例在 List < Student > 中添加 Student 類的對象。

var students = new List<Student>() { 
                new Student(){ Id = 1, Name="Bill"},
                new Student(){ Id = 2, Name="Steve"},
                new Student(){ Id = 3, Name="Ram"},
                new Student(){ Id = 4, Name="Abdul"}
            };

在List中添加數(shù)組

使用AddRange()方法將數(shù)組或另一個集合中的所有元素添加到List。

AddRange() 簽名:

 void AddRange(IEnumerable<T> collection)
string[] cities = new string[3]{ "Mumbai", "London", "New York" };

var popularCities = new List<string>();

// 在列表中添加數(shù)組
popularCities.AddRange(cities);

var favouriteCities = new List<string>();

// 添加列表 
favouriteCities.AddRange(popularCities);

訪問List

可以通過索引、 for/foreach 循環(huán)和使用 LINQ 查詢訪問列表。列表的索引從零開始。傳遞方括號中的索引以訪問單個列表項,與數(shù)組相同。使用 foreach 或 for 循環(huán)迭代 List <T> 集合。

List<int> numbers = new List<int>() { 1, 2, 5, 7, 8, 10 };
Console.WriteLine(numbers[0]); // 版畫1
Console.WriteLine(numbers[1]); // 版畫2
Console.WriteLine(numbers[2]); // 版畫5
Console.WriteLine(numbers[3]); // 版畫7

// 使用foreach LINQ方法
numbers.ForEach(num => Console.WriteLine(num + ", "));//打印1,2,5,7,8,10,

// 使用for循環(huán)
for(int i = 0; i < numbers.Count; i++)
    Console.WriteLine(numbers[i]);

使用LINQ訪問列表

List<T>實現(xiàn)IEnumerable接口。因此,我們可以使用LINQ查詢語法或方法語法來查詢列表,如下所示。

var students = new List<Student>() { 
                new Student(){ Id = 1, Name="Bill"},
                new Student(){ Id = 2, Name="Steve"},
                new Student(){ Id = 3, Name="Ram"},
                new Student(){ Id = 4, Name="Abdul"}
            };

//得到所有名字叫 Bill 的學生
var result = from s in students
	     where s.Name == "Bill"
	     select s;
		
foreach(var student in result)
    Console.WriteLine(student.Id + ", " + student.Name);

在列表(List)中插入元素

使用該Insert()方法將元素插入List<T>指定索引處的集合中。

Insert() 簽名:

void Insert(int index, T item);
var numbers = new List<int>(){ 10, 20, 30, 40 };

numbers.Insert(1, 11);// 在第一個索引處插入11,在10之后。

foreach (var num in numbers)
    Console.Write(num);

從列表(List)中刪除元素

使用Remove()方法刪除List<T>集合中第一個出現(xiàn)的指定元素。使用RemoveAt()方法從指定索引中刪除元素。如果指定索引處沒有元素,則將拋出ArgumentOutOfRangeException。

Remove() 簽名

 bool Remove(T item)

RemoveAt() 簽名

void RemoveAt(int index)
var numbers = new List<int>(){ 10, 20, 30, 40, 10 };

numbers.Remove(10); // 從列表中刪除10

numbers.RemoveAt(2); //刪除第三個元素(索引從0開始)

//numbers.RemoveAt(10); //拋出ArgumentOutOfRangeException

foreach (var el in intList)
    Console.Write(el); // 輸出 20 30

檢查列表(List)中的元素

使用Contains()方法確定元素是否在 List<T> 中。

var numbers = new List<int>(){ 10, 20, 30, 40 };
numbers.Contains(10); // 返回true
numbers.Contains(11); // 返回false
numbers.Contains(20); // 返回true

List <T>類層次結(jié)構(gòu)

下圖說明了List<T>層次結(jié)構(gòu)。

List <T>層次結(jié)構(gòu)

List <T>類的屬性和方法

下表列出了重要的List<T>類的屬性和方法:

屬性用法
Items獲取或設(shè)置指定索引處的元素
Count返回List <T>中存在的元素總數(shù)
方法用法
Add在List <T>的末尾添加元素。
AddRange將指定集合的元素添加到List <T>的末尾。
BinarySearch搜索元素并返回該元素的索引。
Clear從List <T>中刪除所有元素。
Contains檢查指定元素在List <T>中是否存在。
Find根據(jù)指定的謂詞函數(shù)查找第一個元素。
Foreach遍歷 List <T>。
Insert在List <T>中的指定索引處插入元素。
InsertRange在指定的索引處插入另一個集合的元素。
Remove刪除指定元素的第一次出現(xiàn)。
RemoveAt刪除指定索引處的元素。
RemoveRange刪除所有與提供的謂詞功能匹配的元素。
Sort對所有元素進行排序。
TrimExcess將容量設(shè)置為實際的元素數(shù)。
TrueForAll確定List <T>中的每個元素是否與指定謂詞定義的條件匹配。
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清