CSharp-Learning/notes/07_Collections.md
Rosmontis_Cloud f604d53191 Initial commit: C# 学习笔记和示例代码
- Lesson 01-10: C# 基础语法
- WebView2: 集成示例
- notes/: 详细笔记
2026-07-01 16:31:35 +08:00

136 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第七课集合List / Dictionary
## List<T> 动态数组
`T` 是泛型,占位符,使用时替换成具体类型。
```csharp
using System.Collections.Generic;
// 声明
List<string> names = new List<string>();
// 添加
names.Add("无言势");
names.Add("字幕");
names.Add("工具");
// 插入(指定位置)
names.Insert(1, "新插入");
// 删除
names.Remove("字幕");
names.RemoveAt(0); // 按索引删除
// 访问
string first = names[0];
// 数量
int count = names.Count;
// 遍历
foreach (string name in names)
{
Console.WriteLine(name);
}
```
## 初始化器
```csharp
// 声明时直接填充
List<string> fruits = new List<string>()
{
"苹果", "香蕉", "橙子"
};
// 简写C# 12+
List<string> fruits2 = ["苹果", "香蕉", "橙子"];
```
## 常用方法
```csharp
List<int> numbers = new List<int>() { 3, 1, 4, 1, 5 };
numbers.Sort(); // 排序
numbers.Reverse(); // 反转
numbers.Contains(5); // 是否包含
numbers.IndexOf(4); // 查找索引
numbers.Clear(); // 清空
numbers.InsertRange(0, ...); // 插入集合
```
## Dictionary<K, V> 键值对
```csharp
using System.Collections.Generic;
// 声明
Dictionary<string, int> scores = new Dictionary<string, int>();
// 添加
scores["无言势"] = 100;
scores["玩家A"] = 85;
scores.Add("玩家B", 90);
// 访问
int score = scores["无言势"]; // 100
// 安全访问(键不存在不报错)
scores.TryGetValue("不存在", out int value);
// 是否包含键
if (scores.ContainsKey("无言势"))
{
Console.WriteLine(scores["无言势"]);
}
// 删除
scores.Remove("玩家A");
// 遍历
foreach (KeyValuePair<string, int> kv in scores)
{
Console.WriteLine($"{kv.Key}: {kv.Value}");
}
// 只遍历键或值
foreach (string key in scores.Keys) { }
foreach (int value in scores.Values) { }
```
## Dictionary 初始化
```csharp
// C# 6+
Dictionary<string, int> config = new Dictionary<string, int>()
{
["sensitivity"] = 70,
["volume"] = 80,
["language"] = 1
};
```
## List 和 Dictionary 在项目中的应用
```csharp
// 识别结果历史
List<string> transcriptHistory = new List<string>();
// 设备配置
Dictionary<string, string> deviceConfig = new Dictionary<string, string>()
{
["name"] = "USB麦克风",
["sampleRate"] = "16000",
["channels"] = "1"
};
// 设置选项
Dictionary<string, bool> settings = new Dictionary<string, bool>()
{
["autoConnect"] = true,
["vad"] = true
};
```