瞭解如何使用 C 中的 List<T> 來管理數據收集#
本入門教學課程介紹 C# 語言及類別的基本概念。
本教學課程會以互動方式教導您 C#,使用瀏覽器撰寫 C# 程式代碼,並查看編譯和執行程式碼的結果。 其中包含一系列課程,可建立、修改及探索集合和陣列。 您主要使用 List<T> 類別。
基本清單範例
提示
當代碼段區塊包含 [執行] 按鈕時,該按鈕會開啟互動式視窗,或取代互動式視窗中的現有程序代碼。 當代碼段不包含 [執行] 按鈕時,您可以複製程式代碼並將其新增至當前的互動式視窗。
在互動式視窗中執行下列程序代碼。 以您的名稱取代 <name>
並選擇 執行:
List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
您已建立字串清單、在該清單中新增三個名稱,並列印所有 CAPS 中的名稱。 您使用您在先前教程中學到的概念來遍歷列表。
顯示名稱的程式代碼會使用 字串插補 功能。 當您在 string
前面加上 $
字元時,您可以在字元串宣告中內嵌 C# 程式代碼。 實際字串會以它所產生的值取代該 C# 程式代碼。 在此範例中,它會以轉換成大寫字母的每個名稱取代 {name.ToUpper()}
,因為您呼叫了 String.ToUpper 方法。
讓我們繼續探索。
修改清單內容
您建立的集合會使用 List<T> 類型。 此類型會儲存元素的序列。 您可以指定角括弧之間的項目類型。
此 List<T> 類型的其中一個重要層面是它可以成長或縮小,讓您新增或移除元素。 您可以在顯示其內容後修改內容,然後查看結果。 在您撰寫的程式代碼之後新增下列程式代碼(列印內容的循環):
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
您已將另外兩個名稱新增至清單結尾。 您也移除了一個。 此程式代碼區塊的輸出會顯示初始內容,然後列印空白行和新內容。
List<T> 可讓您藉由 索引 來參考個別項目。 您可以使用 [
和 ]
令牌來存取項目。 在您已撰寫的程式代碼之後新增下列程式代碼,並加以嘗試:
Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");
您不允許存取超過清單結尾。 您可以檢查清單使用 Count 屬性的時間長度。 新增下列程式代碼:
Console.WriteLine($"The list has {names.Count} people in it");
再次選取 [執行] 以查看結果。 在 C# 中,索引從 0 開始,因此最大的有效索引小於清單中的項目數目。
搜尋和排序列表
我們的範例會使用相對較小的清單,但您的應用程式通常會建立具有更多元素的清單,有時數千個。 若要尋找這些較大型集合中的元素,您需要搜尋清單中的不同項目。
IndexOf 方法會搜尋專案,並傳回專案的索引。 如果專案不在清單中,IndexOf
會傳回 -1
。 請嘗試查看其運作方式。 在到目前為止所撰寫的內容之後新增下列程式代碼:
var index = names.IndexOf("Felipe");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
index = names.IndexOf("Not Found");
if (index == -1)
{
Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
您可能不知道某項目是否在清單中,因此應該一律檢查所傳回的 IndexOf索引。 如果是 -1
,則找不到該項目。
您列表中的項目也可以排序。 Sort 方法會按一般順序排序列表中的所有項目(對字串則是按字母順序排列)。 新增此程式代碼並再次執行:
names.Sort();
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
其他類型的清單
到目前為止,您已在清單中使用 string
格式。 讓我們使用不同的類型來建立 List<T>。 讓我們建置一組數位。 刪除您到目前為止撰寫的程式代碼,並將它取代為下列程式代碼:
List<int> fibonacciNumbers = [1, 1];
這會建立整數清單,並將前兩個整數設定為值 1。 Fibonacci 序列,數位序列,開頭為兩個 1。 每個下一個 Fibonacci 數位都是藉由取得前兩個數位的總和來找到。 新增此程式代碼:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
按 執行 以查看結果;
挑戰
查看您是否可以結合此課程和先前課程的一些概念。 擴充您到目前為止使用斐波那契數列所建置的內容。 嘗試撰寫程式代碼來產生序列中的前 20 個數位。 (作為提示,第20個菲博納奇數位是6765。
你想到類似的東西嗎?
在每次迴圈迭代中,您會從清單中取得最後兩個整數,將它們相加,並將該值新增到清單中。 迴圈會重複,直到您將20個專案新增至清單為止。
您已完成清單互動式教學課程,這是 C# 互動式教學課程的最終簡介。 您可以流覽 .NET 網站 來下載 .NET SDK、在您的電腦上建立專案,以及繼續撰寫程式代碼。 「後續步驟」一節會帶您回到這些教學課程。
您可以在下列文章中深入瞭解 .NET 集合:
恭喜,您已完成清單教學。 您可以在自己的開發環境中繼續進行 更多 教學課程。
您可以在 .NET 基本概念一文中深入瞭解如何使用 集合中的 List
類型。 您也會瞭解許多其他集合類型。