首页 > 编程开发 > C类语言    日期:2026-07-20 / 浏览

在 C# 开发中,集合(Collection) 是存储和管理多个对象的重要工具。相比数组,集合更加灵活,可以动态增加、删除元素,并提供丰富的数据操作方法。

本文作为《一个零基础小白的 C# 成长100天》系列教程的一部分,带你从基础理解 C# 集合。

一、什么是 C# 集合?

简单来说:

集合就是一个可以保存多个数据的容器。

例如:数组:

string[] names = new string[3];

names[0] = "张三";
names[1] = "李四";
names[2] = "王五";

问题:

  • 数组长度固定
  • 添加删除麻烦
  • 功能有限

集合:

List<string> names = new List<string>();

names.Add("张三");
names.Add("李四");
names.Add("王五");

优势:

✅ 自动扩容
✅ 添加方便
✅ 删除方便
✅ 查询灵活
✅ 支持排序、筛选等操作

二、C# 集合分类

C# 集合主要分为两大类:

集合
│
├── 非泛型集合
│      ├── ArrayList
│      ├── Hashtable
│
└── 泛型集合
       ├── List<T>
       ├── Dictionary<TKey,TValue>
       ├── HashSet<T>
       ├── Queue<T>
       └── Stack<T>

现代 C# 开发中:

推荐优先使用泛型集合。

三、List<T> 集合(最常用)

1. 什么是 List?

List 是动态数组。

命名空间:

using System.Collections.Generic;

定义:

List<T> 集合名 = new List<T>();

例如:

List<string> students = new List<string>();

students.Add("小明");
students.Add("小红");
students.Add("小刚");

2. List 常用方法

添加元素 Add()

List<int> nums = new List<int>();

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循环

List<string> names =
    new List<string>()
{
    "张三",
    "李四",
    "王五"
};


for(int i=0;i<names.Count;i++)
{
    Console.WriteLine(names[i]);
}

方式2:foreach(推荐)

foreach(string name in names)
{
    Console.WriteLine(name);
}

输出:

张三
李四
王五

五、Dictionary<TKey,TValue> 字典集合

Dictionary 是:

键值对集合。

类似:

身份证号码 → 人名
商品编号 → 商品
用户名 → 用户信息

定义:

Dictionary<TKey,TValue>

例如:

Dictionary<int,string> users =
    new Dictionary<int,string>();

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<T> 集合

HashSet 特点:

不允许重复数据。

例如:

HashSet<int> numbers =
    new HashSet<int>();

numbers.Add(10);
numbers.Add(20);
numbers.Add(10);

结果:

10
20

重复的10不会添加。

应用:

  • 去重
  • 判断是否存在

例如:

if(numbers.Contains(20))
{
    Console.WriteLine("存在");
}

七、Queue<T> 队列集合

特点:

先进先出 FIFO

生活例子:

排队买票:

第一个进入 
↓ 
第一个出去

代码:

Queue<string> queue =
    new Queue<string>();

queue.Enqueue("张三");
queue.Enqueue("李四");
queue.Enqueue("王五");

取出:

string name =
    queue.Dequeue();

Console.WriteLine(name);

结果:

张三

八、Stack<T> 栈集合

特点:

后进先出 LIFO

类似:

一摞书:

第三本 
第二本 
第一本

拿的时候:

第三本先拿

代码:

Stack<int> stack =
    new Stack<int>();

stack.Push(1);
stack.Push(2);
stack.Push(3);

弹出:

Console.WriteLine(
    stack.Pop()
);

结果:

3

九、集合选择指南

需求 推荐集合
普通列表 List<T>
需要键值查询 Dictionary
去重复数据 HashSet
排队处理 Queue
撤销操作 Stack
固定数量数据 Array

十、集合综合案例:学生管理系统

using System;
using System.Collections.Generic;


class Program
{
    static void Main()
    {

        List<string> students =
            new List<string>();


        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
姓名:
小明
查看:
小明

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章