一、基本概念
在编程中,键值对是一种常见的数据结构。C#中的键值对是一种基于哈希表的集合类型,也称为字典(Dictionary)类型,它由一个键和一个值组成。每个键必须是唯一的,而每个值可以对应多个键。 键值对的实现是基于哈希表的,哈希表是一种将输入映射到具体位置的数据结构。在哈希表中,每个键都对应一个哈希码,哈希码将键映射到一个桶中,桶中存储着键和对应的值,这样在查找时只需要将键转换成哈希码,再查找哈希码对应的桶中是否存在该键即可。 C#中的键值对类型是泛型的,使用时需要指定键和值的类型。使用键值对时,我们可以通过键获取对应的值,也可以将新的键值对添加到集合中。
二、创建和初始化
在C#中,我们可以使用Dictionary<TKey, TValue>
类来创建键值对集合,其中TKey
和TValue
分别表示键和值的类型。创建一个空的键值对集合可以使用如下代码:
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();
这样就清空了整个集合中的所有键值对。