C#键值对详解

发布时间:2023-05-22

一、基本概念

在编程中,键值对是一种常见的数据结构。C#中的键值对是一种基于哈希表的集合类型,也称为字典(Dictionary)类型,它由一个键和一个值组成。每个键必须是唯一的,而每个值可以对应多个键。 键值对的实现是基于哈希表的,哈希表是一种将输入映射到具体位置的数据结构。在哈希表中,每个键都对应一个哈希码,哈希码将键映射到一个桶中,桶中存储着键和对应的值,这样在查找时只需要将键转换成哈希码,再查找哈希码对应的桶中是否存在该键即可。 C#中的键值对类型是泛型的,使用时需要指定键和值的类型。使用键值对时,我们可以通过键获取对应的值,也可以将新的键值对添加到集合中。

二、创建和初始化

在C#中,我们可以使用Dictionary<TKey, TValue>类来创建键值对集合,其中TKeyTValue分别表示键和值的类型。创建一个空的键值对集合可以使用如下代码:

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

我们也可以在创建时初始化键值对集合:

Dictionary<string, int> dict = new Dictionary<string, int> {
    { "apple", 1 },
    { "banana", 2 },
    { "cherry", 3 }
};

这样我们就得到了一个包含三个元素的键值对集合,键分别是"apple"、"banana"和"cherry",对应的值分别是1、2和3。

三、访问和修改

通过键获取对应的值可以使用索引器,例如:

int value = dict["apple"];

这样就可以获取键为"apple"的值1。如果键不存在,则会抛出KeyNotFoundException异常。 我们也可以使用TryGetValue方法获取键对应的值,这样避免了访问不存在的键时抛出异常的情况:

int value;
bool success = dict.TryGetValue("apple", out value);
if (success) {
    Console.WriteLine("value of 'apple': " + value);
}

如果键不存在,success将返回false,此时value的值为0。 使用索引器或Add方法可以向键值对集合中添加新的键值对,例如:

dict["durian"] = 4;
dict.Add("elderberry", 5);

这样我们就向集合中添加了两个新的键值对。如果已经存在该键,则使用索引器会更新对应的值,而Add方法会抛出ArgumentException异常。 如果想要修改已经存在的键值对的值,可以直接使用索引器或键值对的Key属性进行修改:

dict["apple"] = 10;
dict["banana"]++;

这样我们就将键为"apple"的值修改为10,将键为"banana"的值加1。

四、遍历和删除

我们可以使用foreach循环对键值对集合进行遍历:

foreach (var pair in dict) {
    Console.WriteLine(pair.Key + ": " + pair.Value);
}

这样就会按照键值对的顺序,依次输出每个键和对应的值。 如果想要删除一个已经存在的键值对,可以使用Remove方法:

dict.Remove("apple");

这样就删除了键为"apple"的键值对。如果想要清空整个键值对集合,可以使用Clear方法:

dict.Clear();

这样就清空了整个集合中的所有键值对。