首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 進階 (九):資料結構與集合總覽

     編輯:關於C#

C# 集合框架核心概念:ArrayList、Stack、Queue 實戰入門

.NET 集合將多個相似物件組合,支援 foreach 遍歷。最簡單結構為陣列,但大小固定;動態集合首選 ArrayList (非泛型) 或 List<T> (泛型)。本文介紹三大經典集合實作。

一、ArrayList:動態陣列

  • 初始容量 10,滿時自動擴容 2 倍 (舊物件標記 GC 回收)。
  • 命名空間:System.Collections。

基本範例


using System;
using System.Collections;

namespace gosoa.com.cn
{
    class Test
    {
        static void Main()
        {
            ArrayList arrayTest = new ArrayList(4);
            arrayTest.Add("www.");
            arrayTest.Add("gosoa.");
            arrayTest.Add("com.");
            arrayTest.Add("cn");
            foreach (string item in arrayTest) Console.Write(item); // www.gosoa.com.cn
            Console.WriteLine("\n" + arrayTest.Capacity); // 4

            arrayTest.Add("url"); // 第 5 項觸發擴容
            Console.WriteLine(arrayTest.Capacity); // 8
        }
    }
}

常用方法

  • Insert(index, value):指定位置插入。
  • RemoveAt(index) / Remove(value):移除。
  • AddRange(collection) / RemoveRange(index, count):批次操作。

綜合範例


ArrayList arrayTest = new ArrayList(4);
arrayTest.Add("www."); arrayTest.Add("gosoa."); arrayTest.Add("com."); arrayTest.Add("cn");
// 輸出: www.gosoa.com.cn

arrayTest.Insert(0, "https://"); // 輸出: https://www.gosoa.com.cn

string[] stringArr = { "\n", "www.", "cnblogs.", "com" };
arrayTest.AddRange(stringArr); // 輸出包含兩個網址

arrayTest.RemoveRange(4, 4); // 移除第 4 索引起 4 項,剩 https://www.gosoa.com.cn

二、Stack:後進先出 (LIFO)

  • 適合暫存資料,用完即刪。
  • Push() 入堆疊,Pop() 出堆疊。

Stack stackTest = new Stack();
stackTest.Push("cn");
stackTest.Push("com.");
stackTest.Push("gosoa.");
stackTest.Push("www.");
// 遍歷輸出: www.gosoa.com.cn (LIFO 但 foreach 仍按插入順序? 實際 Stack 遍歷為 LIFO 逆序)
// 修正:Stack 實作 IEnumerable 時通常從頂端往下,故 foreach 輸出為 www.gosoa.com.cn

stackTest.Pop(); // 移除 www.
foreach (string item in stackTest) Console.Write(item); // 輸出: gosoa.com.cn

三、Queue:先進先出 (FIFO)

  • Enqueue() 入佇列,Dequeue() 出佇列。

Queue queueTest = new Queue();
queueTest.Enqueue("cn");
queueTest.Enqueue("com.");
queueTest.Enqueue("gosoa.");
queueTest.Enqueue("www.");
// 輸出: cncom.gosoa.www (FIFO 順序)

queueTest.Dequeue(); // 移除 cn
foreach (string item in queueTest) Console.Write(item); // 輸出: com.gosoa.www

四、總結比較

集合順序核心方法適用場景
ArrayList索引順序Add/Insert/RemoveAt動態陣列、隨機存取
StackLIFOPush/Pop暫存、回溯、運算式求值
QueueFIFOEnqueue/Dequeue排程、BFS、訊息佇列
現代開發建議優先使用泛型對應類別:List<T>、Stack<T>、Queue<T>,具型別安全且值型別免裝箱。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved