C# Dictionary<TKey, TValue>使用

本文详细介绍了在C#中使用Dictionary<TKey,TValue>进行键值对操作,包括添加数据、移除元素、更新值、遍历以及访问和清空字典的方法。同时提到了注意事项和替代方法,如使用TryGetValue和避免在遍历过程中修改集合。
摘要由CSDN通过智能技术生成

在C#中,Dictionary<TKey, TValue>是一个键值对集合,其中键和值都是字符串类型。

以下是关于如何向字典的示例:

添加数据到 Dictionary<string, string>:

// 创建一个新的 Dictionary
Dictionary<string, string> dictionary = new Dictionary<string, string>();

// 向字典中添加键值对
dictionary.Add("Key1", "Value1"); // 添加第一个键值对
dictionary.Add("Key2", "Value2"); // 添加第二个键值对

// 或者使用索引器直接赋值(如果确保键不存在)
dictionary["Key3"] = "Value3";

// 示例输出:
// dictionary 的内容现在是:{ Key1: Value1, Key2: Value2, Key3: Value3 }

移除 Dictionary<string, string>中数据:

// 假设我们有一个已填充数据的字典
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("Key1", "Value1");
dictionary.Add("Key2", "Value2");

// 移除指定键的键值对
string keyToRemove = "Key1";
if (dictionary.ContainsKey(keyToRemove))
{
    dictionary.Remove(keyToRemove);
}

// 示例输出:
// 在移除 "Key1" 后,字典的内容为:{ Key2: Value2 }

更新元素

更新一个已存在的键对应的值,直接赋新值即可:

dictionary["Key1"] = "NewValue1";

遍历 Dictionary

遍历字典中的所有键值对,通常使用 foreach 循环:

foreach (KeyValuePair<string, string> kvp in myDictionary)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}

或者只遍历键或值:

foreach (string key in myDictionary.Keys)
{
    Console.WriteLine(key);
}

foreach (string value in myDictionary.Values)
{
    Console.WriteLine(value);
}

访问元素

通过键来访问字典中的值:

string value = myDictionary["Key1"];
// 或者使用 TryGetValue 方法,如果键不存在,则不会抛出异常
string value;
if (myDictionary.TryGetValue("Key5", out value))
{
    Console.WriteLine(value);
}
else
{
    Console.WriteLine("Key not found.");
}

清空 Dictionary<string, string>:

// 使用 Clear 方法清空字典中的所有键值对
dictionary.Clear();

// 清空后,字典将不包含任何元素。

按照字典中的TValue移除数据

首先遍历字典,找出所有值等于 valueToRemove 的键,并将这些键存储在一个列表中。然后,为了安全地从字典中移除这些项(避免在遍历过程中修改集合的问题),我们逆序遍历这个键的列表,并逐个从字典中移除它们。

// 假设我们想移除值为 "ValueToRemove" 的所有项
string valueToRemove = "ValueToRemove";
List<string> keysToRemove = new List<string>();

// 遍历字典,找出所有值为 valueToRemove 的键
foreach (var pair in myDictionary)
{
    if (pair.Value == valueToRemove)
    {
        keysToRemove.Add(pair.Key);
    }
}

// 逆序遍历 keysToRemove 列表并移除相应的项,以避免在遍历过程中修改集合导致的异常
for (int i = keysToRemove.Count - 1; i >= 0; i--)
{
    myDictionary.Remove(keysToRemove[i]);
}

请注意:这种方法在处理大字典或频繁执行此操作时可能会对性能有影响。因此,除非必要,否则最好考虑是否可以调整数据结构或逻辑以更高效地达成目标。

其他方法:

C# Dictionary中GetEnumerator()方法_c# getenumerator-CSDN博客

wpf “Key”属性只能用于“IDictionary”中包含的元素。_key属性只能用于idic-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangnaisheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值