# List 在 C# 中,List<T> 是一種通用的集合類型,用來儲存一組同類型的對象。相較於陣列,List<T> 的大小是可變的,可以根據需要動態增加或移除元素。 以下是一些關於 C# List<T> 的基本介紹: --- ``` using System; using System.Collections.Generic; // 使用 List 需要這個命名空間 class Program { static void Main() { // 1. 宣告並初始化 List List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // 一個包含 5 個整數的 List // 2. 存取和修改 List 元素 int firstNumber = numbers[0]; // 取得 List 中的第一個元素 numbers[1] = 10; // 將 List 中的第二個元素設為 10 // 3. 遍歷 List // 使用 for 迴圈 for (int i = 0; i < numbers.Count; i++) { Console.WriteLine("For loop: " + numbers[i]); } // 使用 foreach 迴圈 foreach (int number in numbers) { Console.WriteLine("Foreach loop: " + number); } // 4. 添加和刪除元素 numbers.Add(6); // 在 List 末尾添加一個元素 numbers.Remove(3); // 移除 List 中第一個出現的值為 3 的元素 numbers.Insert(2, 99); // 在索引 2 的位置插入 99 // 5. List.Sort() List<int> unsortedNumbers = new List<int> { 5, 2, 8, 1, 3 }; // 宣告並初始化 List unsortedNumbers.Sort(); // 使用 Sort() 方法對 List 進行排序 // 輸出排序後的 List Console.WriteLine("排序後:"); foreach (int number in unsortedNumbers) { Console.Write(number + " "); } Console.WriteLine(); // 6. List.Reverse() numbers.Reverse(); // 使用 Reverse() 方法將 List 元素順序反轉 // 輸出反轉後的 List Console.WriteLine("反轉後:"); foreach (int number in numbers) { Console.Write(number + " "); } Console.WriteLine(); // 7. 檢查元素是否存在 bool containsThree = numbers.Contains(3); // 檢查 List 是否包含 3 Console.WriteLine("List contains 3: " + containsThree); // 8. 取得元素索引 int indexOfTen = numbers.IndexOf(10); // 取得值為 10 的元素索引 Console.WriteLine("Index of 10: " + indexOfTen); // 9. 清空 List numbers.Clear(); // 使用 Clear() 方法清空 List // 確認 List 是否清空 Console.WriteLine("List count after clear: " + numbers.Count); // Output: 0 } } ``` ### 說明 1. 宣告並初始化 List:使用 List<int> 來宣告一個包含整數的 List,並直接使用初始值進行初始化。 2. 存取和修改 List 元素:通過索引存取 List 元素,並修改特定位置的元素值。 3. 遍歷 List:使用 for 迴圈和 foreach 迴圈來遍歷 List 中的元素。 4. 添加和刪除元素:使用 Add()、Remove() 和 Insert() 方法來添加和刪除 List 中的元素。 5. List.Sort():使用 Sort() 方法對 List 進行排序。 6. List.Reverse():使用 Reverse() 方法反轉 List 中元素的順序。 7. 檢查元素是否存在:使用 Contains() 方法檢查特定元素是否存在於 List 中。 8. 取得元素索引:使用 IndexOf() 方法取得 List 中特定元素的索引。 9. 清空 List:使用 Clear() 方法清空 List 中的所有元素。 --- 在 C# 中,List<T> 不僅可以進行基本的操作,還支持一些進階操作來處理更複雜的場景。這些操作能夠讓 List 在處理大數據、過濾、轉換、查詢等情況下更加靈活高效。 以下是一些關於 C# List<T> 的更高階應用介紹: ``` using System; using System.Collections.Generic; // 使用 List 需要這個命名空間 using System.Linq; // 使用 LINQ 方法需要這個命名空間 class Program { static void Main() { // 1. 使用 LINQ 查詢 List List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 取得所有偶數 List<int> evenNumbers = numbers.Where(n => n % 2 == 0).ToList(); Console.WriteLine("偶數:"); foreach (var num in evenNumbers) { Console.Write(num + " "); } Console.WriteLine(); // 2. List.ForEach() 方法 // 使用 List 的 ForEach() 方法進行批量操作 numbers.ForEach(n => Console.WriteLine("Number: " + n)); // 3. List.ConvertAll() 方法 // 將 List 中的整數轉換為對應的字符串 List<string> stringNumbers = numbers.ConvertAll(n => n.ToString()); Console.WriteLine("轉換為字串:"); foreach (var str in stringNumbers) { Console.Write(str + " "); } Console.WriteLine(); // 4. List.Find() 和 List.FindAll() 方法 // 使用 Find() 方法找到第一個符合條件的元素 int firstEven = numbers.Find(n => n % 2 == 0); Console.WriteLine("第一個偶數: " + firstEven); // 使用 FindAll() 方法找到所有符合條件的元素 List<int> largeNumbers = numbers.FindAll(n => n > 5); Console.WriteLine("大於 5 的數字:"); foreach (var num in largeNumbers) { Console.Write(num + " "); } Console.WriteLine(); // 5. List.Exists() 方法 // 檢查是否存在符合條件的元素 bool hasLargeNumber = numbers.Exists(n => n > 10); Console.WriteLine("List 是否有大於 10 的數字: " + hasLargeNumber); // 6. List.TrueForAll() 方法 // 檢查所有元素是否都符合條件 bool allPositive = numbers.TrueForAll(n => n > 0); Console.WriteLine("List 中是否全為正數: " + allPositive); // 7. List.BinarySearch() 方法 // 使用 BinarySearch() 進行二分搜尋 (需要先排序) numbers.Sort(); int index = numbers.BinarySearch(6); Console.WriteLine("數字 6 的索引: " + index); // 8. List.GetRange() 方法 // 取得 List 的部分範圍 List<int> subList = numbers.GetRange(2, 5); // 取得從索引 2 開始的 5 個元素 Console.WriteLine("子 List:"); foreach (var num in subList) { Console.Write(num + " "); } Console.WriteLine(); // 9. List.Capacity 和 List.TrimExcess() // 調整 List 的容量以優化記憶體 Console.WriteLine("原始容量: " + numbers.Capacity); numbers.TrimExcess(); // 去除多餘的容量 Console.WriteLine("優化後的容量: " + numbers.Capacity); } } ``` ### 說明 1. 使用 LINQ 查詢 List:利用 LINQ 查詢,過濾出符合條件的元素,並返回新的 List。 2. List.ForEach() 方法:批量對 List 中的每個元素執行特定操作。 3. List.ConvertAll() 方法:將 List 中的每個元素轉換為另一種型別。 4. List.Find() 和 List.FindAll() 方法:查找符合條件的第一個元素或所有符合條件的元素。 5. List.Exists() 方法:檢查是否有任何元素符合指定條件。 6. List.TrueForAll() 方法:檢查 List 中的所有元素是否都符合某個條件。 7. List.BinarySearch() 方法:在排序好的 List 中進行二分搜尋,找到指定元素的索引。 8. List.GetRange() 方法:提取 List 的子集合,取得部分範圍的元素。 List.Capacity 和 List.TrimExcess():調整 List 的容量以優化記憶體使用。 9. 這些更高階應用使 List 在處理大規模數據和複雜操作時更加高效,並且提供了豐富的功能來應對各種情況。