| 特性 | 数组(Array) | 集合(List) | 字典(Dictionary<TKey, TValue>) |
|---|---|---|---|
| 存储类型 | 单一类型元素 | 单一类型元素 | 键值对(键唯一) |
| 内存连续性 | 连续内存 | 连续内存(动态扩容) | 哈希表分散存储 |
| 访问速度 | O(1) | O(1) | 平均 O(1) |
| 插入/删除效率 | 低(需移动元素) | 中间元素低,末尾高 | 高(哈希表操作) |
| 动态扩容 | 不支持 | 支持 | 支持 |
| 适用场景 | 固定数据、高频访问 | 动态数据、频繁操作 | 键值快速查找 |
主要其实就是从俩方面吧
一方面是 数量确定的话可以用数组 动态的话 就考虑集合和字典
一方面是 操作上 需要快速查找的用字典 需要频繁添加排序遍历的就用集合
性能上来看,如果不是涉及到很大数据的情况下基本没差
核心区别对比
1. 数组(Array)
- 存储方式:固定长度、连续内存分配,元素类型必须一致
性能:
- 访问速度极快(O(1)),通过索引直接定位
- 插入/删除效率低,需移动后续元素
- 功能:仅支持索引操作,无动态扩容能力
- 示例:
int[] numbers = new int[5] { 1, 2, 3, 4, 5 }; Console.WriteLine(numbers[0]); // 输出:1
2. 集合(List)
- 存储方式:动态数组实现,支持泛型(类型安全),内存连续但可自动扩容
- 性能:
- 随机访问快(O(1)),但扩容时需复制数据(O(n))
- 插入/删除中间元素较慢(需移动元素)
- 功能:提供增删改查、排序、查找等高级方法
- 示例:
List<string> names = new List<string> { "Alice", "Bob" }; names.Add("Charlie"); // 动态添加元素
3. 字典(Dictionary<TKey, TValue>)
- 存储方式:哈希表实现,键值对存储,键唯一且无序
- 性能:
- 查找极快(平均 O(1)),哈希冲突时可能退化为 O(n)
- 内存占用较高(需存储哈希表和键值对)
- 功能:支持通过键快速访问值,提供唯一性校验和去重
- 示例:
Dictionary<int, string> employees = new Dictionary<int, string>(); employees.Add(101, "Alice"); Console.WriteLine(employees[101]); // 输出:Alice
本文探讨了C#中Dictionary<string,string>的实用性和局限性,对比了其与类对象在参数接收及数据处理上的差异。通过实例展示了如何遍历集合字典项,以及集合操作如倒叙、赋值和添加的方法。

452

被折叠的 条评论
为什么被折叠?



