C# 集合详解:从数组到泛型集合全面掌握
在 C# 开发中集合Collection是存储和管理多个对象的重要工具。相比数组集合更加灵活可以动态增加、删除元素并提供丰富的数据操作方法。本文作为《一个零基础小白的 C# 成长100天》系列教程的一部分带你从基础理解 C# 集合。一、什么是 C# 集合简单来说集合就是一个可以保存多个数据的容器。例如数组string[] names new string[3]; names[0] 张三; names[1] 李四; names[2] 王五;问题数组长度固定添加删除麻烦功能有限集合Liststring names new Liststring(); names.Add(张三); names.Add(李四); names.Add(王五);优势✅ 自动扩容✅ 添加方便✅ 删除方便✅ 查询灵活✅ 支持排序、筛选等操作二、C# 集合分类C# 集合主要分为两大类集合 │ ├── 非泛型集合 │ ├── ArrayList │ ├── Hashtable │ └── 泛型集合 ├── ListT ├── DictionaryTKey,TValue ├── HashSetT ├── QueueT └── StackT现代 C# 开发中推荐优先使用泛型集合。三、ListT 集合最常用1. 什么是 ListList 是动态数组。命名空间using System.Collections.Generic;定义ListT 集合名 new ListT();例如Liststring students new Liststring(); students.Add(小明); students.Add(小红); students.Add(小刚);2. List 常用方法添加元素 Add()Listint nums new Listint(); nums.Add(10); nums.Add(20); nums.Add(30);结果10 20 30批量添加 AddRange()nums.AddRange( new int[]{40,50,60} );结果10 20 30 40 50 60获取元素通过索引Console.WriteLine(nums[0]);输出10修改元素nums[0]100;结果100 20 30删除元素 Remove()nums.Remove(20);删除值20根据索引删除 RemoveAt()nums.RemoveAt(0);删除第一个元素。清空集合nums.Clear();获取数量Console.WriteLine(nums.Count);四、遍历 List 集合方式1for循环Liststring names new Liststring() { 张三, 李四, 王五 }; for(int i0;inames.Count;i) { Console.WriteLine(names[i]); }方式2foreach推荐foreach(string name in names) { Console.WriteLine(name); }输出张三 李四 王五五、DictionaryTKey,TValue 字典集合Dictionary 是键值对集合。类似身份证号码 → 人名 商品编号 → 商品 用户名 → 用户信息定义DictionaryTKey,TValue例如Dictionaryint,string users new Dictionaryint,string(); users.Add(1001,张三); users.Add(1002,李四);结构1001 --- 张三 1002 --- 李四根据 Key 获取 ValueConsole.WriteLine(users[1001]);输出张三遍历 Dictionaryforeach(var item in users) { Console.WriteLine( item.Key : item.Value ); }输出1001:张三 1002:李四六、HashSetT 集合HashSet 特点不允许重复数据。例如HashSetint numbers new HashSetint(); numbers.Add(10); numbers.Add(20); numbers.Add(10);结果10 20重复的10不会添加。应用去重判断是否存在例如if(numbers.Contains(20)) { Console.WriteLine(存在); }七、QueueT 队列集合特点先进先出 FIFO生活例子排队买票第一个进入 ↓ 第一个出去代码Queuestring queue new Queuestring(); queue.Enqueue(张三); queue.Enqueue(李四); queue.Enqueue(王五);取出string name queue.Dequeue(); Console.WriteLine(name);结果张三八、StackT 栈集合特点后进先出 LIFO类似一摞书第三本 第二本 第一本拿的时候第三本先拿代码Stackint stack new Stackint(); stack.Push(1); stack.Push(2); stack.Push(3);弹出Console.WriteLine( stack.Pop() );结果3九、集合选择指南需求推荐集合普通列表ListT需要键值查询Dictionary去重复数据HashSet排队处理Queue撤销操作Stack固定数量数据Array十、集合综合案例学生管理系统using System; using System.Collections.Generic; class Program { static void Main() { Liststring students new Liststring(); while(true) { Console.WriteLine( 1.添加学生 2.查看学生 3.退出); string choice Console.ReadLine(); if(choice1) { Console.WriteLine( 输入姓名:); string name Console.ReadLine(); students.Add(name); } else if(choice2) { foreach(var s in students) { Console.WriteLine(s); } } else { break; } } } }运行效果1.添加学生 2.查看学生 3.退出 输入 1 姓名 小明 查看 小明