平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“C#中各类集合的基础知识和采用做法”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
在 C# 开发中,集合(Collection) 在这个场景下,是存储和管理多个对象的重要工具。相比数组,集合更加灵活,能够动态增加、删除元素,同时提供丰富的数据操作方法。
落到代码里,本文作为《一个零基础小白的 C# 成长100天》系列教程的一部分,带你从基础理解 C# 集合。
一、什么是 C# 集合?
轻松来说:
集合就是一个能够保存多个数据的容器。
比如:数组:
string[] names = new string[3];
names[0] = "张三";
names[1] = "李四";
names[2] = "王五";
问题:
- 数组长度固定
- 添加删除麻烦
- 功能有限
集合:
Listnames = new List ();
names.Add("张三");
names.Add("李四");
names.Add("王五");
优势:
自动扩容
添加便于
删除便于
查询灵活
兼容排序、筛选等操作
二、C# 集合分类
C# 集合主要分为两大类:
集合
│
├── 非泛型集合
│ ├── ArrayList
│ ├── Hashtable
│
└── 泛型集合
├── List
├── Dictionary
├── HashSet
├── Queue
└── Stack
现代 C# 开发中:
建议优先采用泛型集合。
三、List 集合(最常用)
1. 什么是 List?
List 是动态数组。
命名空间:
using System.Collections.Generic;
定义:
List集合名 = new List ();
比如:
Liststudents = new List ();
students.Add("小明");
students.Add("小红");
students.Add("小刚");
2. List 常用方法
添加元素 Add()
Listnums = new List ();
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 集合
方式1:for循环
Listnames =
new List()
{
"张三",
"李四",
"王五"
};
for(int i=0;i{
Console.WriteLine(names[i]);
}
方式2:foreach(建议)
foreach(string name in names)
{
Console.WriteLine(name);
}
输出:
张三
李四
王五
五、Dictionary 字典集合
Dictionary 是:
键值对集合。
类似:
身份证号码 → 人名
商品编号 → 商品
用户名 → 用户信息
定义:
Dictionary
比如:
Dictionaryusers =
new Dictionary();
users.Add(1001,"张三");
users.Add(1002,"李四");
结构:
1001 ---> 张三
1002 ---> 李四
根据 Key 拿到 Value
Console.WriteLine(users[1001]);
输出:
张三
遍历 Dictionary
foreach(var item in users)
{
Console.WriteLine(
item.Key + ":" + item.Value
);
}
输出:
1001:张三
1002:李四
六、HashSet 集合
HashSet 特点:
不允许重复数据。
比如:
HashSetnumbers =
new HashSet();
numbers.Add(10);
numbers.Add(20);
numbers.Add(10);
结果:
10
20
重复的10不会添加。
应用:
- 去重
- 判断是否存在
比如:
if(numbers.Contains(20))
{
Console.WriteLine("存在");
}
七、Queue 队列集合
特点:
先进先出 FIFO
生活例子:
排队买票:
第一个进入
↓
第一个出去
代码:
Queuequeue =
new Queue();
queue.Enqueue("张三");
queue.Enqueue("李四");
queue.Enqueue("王五");
取出:
string name =
queue.Dequeue();
Console.WriteLine(name);
结果:
张三
八、Stack 栈集合
特点:
后进先出 LIFO
类似:
一摞书:
第三本
第二本
第一本
拿的时候:
第三本先拿
代码:
Stackstack =
new Stack();
stack.Push(1);
stack.Push(2);
stack.Push(3);
弹出:
Console.WriteLine(
stack.Pop()
);
结果:
3
九、集合选择指南
| 需求 | 建议集合 |
|---|---|
| 普通列表 | List |
| 需键值查询 | Dictionary |
| 去重复数据 | HashSet |
| 排队处理 | Queue |
| 撤销操作 | Stack |
| 固定数量数据 | Array |
十、集合综合案例:学生管理系统
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Liststudents =
new List();
while(true)
{
Console.WriteLine(
"1.添加学生 2.查看学生 3.退出");
string choice =
Console.ReadLine();
if(choice=="1")
{
Console.WriteLine(
"输入姓名:");
string name =
Console.ReadLine();
students.Add(name);
}
else if(choice=="2")
{
foreach(var s in students)
{
Console.WriteLine(s);
}
}
else
{
break;
}
}
}
}
运行效果:
1.添加学生
2.查看学生
3.退出
输入:
1
姓名:
小明
查看:
小明
实际处理时,总的来说,C#集合的基础知识和采用方法适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

