在C#中,Dictionary是通用集合,通常用于存储键/值对。 Dictionary的工作与非通用哈希表非常相似。 Dictionary的优点是,它是泛型类型。字典在System.Collection.Generic
命名空间下定义。它本质上是动态的,意味着字典的大小根据需要而增加。
重要事项:
- Dictionary类实现了
- IDictionary
接口 - IReadOnlyCollection
> 接口 - IReadOnlyDictionary
接口 - 词典界面
- IDictionary
- 在字典中,键不能为null,但值可以为null。
- 在字典中,键必须是唯一的。如果您尝试使用重复键,则不允许重复键,然后编译器将引发异常。
- 在字典中,您只能存储相同类型的元素。
- 词典的容量是词典可以容纳的元素数量。
如何创建字典?
Dictionary类有7个用于创建Dictionary的构造函数,这里我们仅使用Dictionary
Dictionary
步骤1:借助using关键字在程序中包含IncludeSystem.Collection.Generics命名空间。
句法:
using System.Collection.Generics;
步骤2:使用Dictionary
Dictionary dictionary_name = new Dictionary();
步骤3:如果要在字典中添加元素,请使用Add()方法在字典中添加键/值对。而且,您也可以在字典中添加键/值对,而无需使用Add方法。如下例所示。
步骤4:可通过三种不同的方式访问字典的键/值对:
- for循环:您可以使用for循环来访问字典的键/值对。
例子:
for(int x=0; i< My_dict1.Count; x++) { Console.WriteLine("{0} and {1}", My_dict1.Keys.ElementAt(x), My_dict1[ My_dict1.Keys.ElementAt(x)]); }
- 使用索引:您可以通过使用字典的索引值来访问字典的各个键/值对。在这里,您只需指定索引中的键即可从给定的字典中获取值,而无需指定索引。索引器始终将键作为参数,如果给定键在字典中不可用,则它给出KeyNotFoundException 。
例子:
Console.WriteLine("Value is:{0}", My_dicti[1123]); Console.WriteLine("Value is:{0}", My_dicti[1125]);
- foreach循环:您可以使用foreach循环来访问字典的键/值对,如下面的示例所示,我们使用foreach循环来访问Dictionary。
例子:
// C# program to illustrate how
// to create a dictionary
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main () {
// Creating a dictionary
// using Dictionary class
Dictionary My_dict1 =
new Dictionary();
// Adding key/value pairs
// in the Dictionary
// Using Add() method
My_dict1.Add(1123, "Welcome");
My_dict1.Add(1124, "to");
My_dict1.Add(1125, "GeeksforGeeks");
foreach(KeyValuePair ele1 in My_dict1)
{
Console.WriteLine("{0} and {1}",
ele1.Key, ele1.Value);
}
Console.WriteLine();
// Creating another dictionary
// using Dictionary class
// adding key/value pairs without
// using Add method
Dictionary My_dict2 =
new Dictionary(){
{"a.1", "Dog"},
{"a.2", "Cat"},
{"a.3", "Pig"} };
foreach(KeyValuePair ele2 in My_dict2)
{
Console.WriteLine("{0} and {1}", ele2.Key, ele2.Value);
}
}
}
1123 and Welcome
1124 and to
1125 and GeeksforGeeks
a.1 and Dog
a.2 and Cat
a.3 and Pig
如何从字典中删除元素?
在字典中,您可以从字典中删除元素。 Dictionary
- 清除:此方法从Dictionary
中删除所有键和值。 - 删除:此方法从Dictionary
中删除具有指定键的值。
例子:
// C# program to illustrate how
// remove key/value pairs from
// the dictionary
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main() {
// Creating a dictionary
// using Dictionary class
Dictionary My_dict =
new Dictionary();
// Adding key/value pairs in the
// Dictionary Using Add() method
My_dict.Add(1123, "Welcome");
My_dict.Add(1124, "to");
My_dict.Add(1125, "GeeksforGeeks");
// Before Remove() method
foreach(KeyValuePair ele in My_dict)
{
Console.WriteLine("{0} and {1}",
ele.Key, ele.Value);
}
Console.WriteLine();
// Using Remove() method
My_dict.Remove(1123);
// After Remove() method
foreach(KeyValuePair ele in My_dict)
{
Console.WriteLine("{0} and {1}",
ele.Key, ele.Value);
}
Console.WriteLine();
// Using Clear() method
My_dict.Clear();
Console.WriteLine("Total number of key/value "+
"pairs present in My_dict:{0}", My_dict.Count);
}
}
1123 and Welcome
1124 and to
1125 and GeeksforGeeks
1124 and to
1125 and GeeksforGeeks
Total number of key/value pairs present in My_dict:0
如何检查字典中元素的可用性?
在字典中,您可以检查给定的键或值是否存在于指定的字典中。 Dictionary
- ContainsKey:此方法用于检查Dictionary
是否包含指定的键。 - ContainsValue:此方法用于检查Dictionary
是否包含特定值。
例子:
// C# program to illustrate how
// to check the given key or
// value present in the dictionary
// or not
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main () {
// Creating a dictionary
// using Dictionary class
Dictionary My_dict =
new Dictionary();
// Adding key/value pairs in the
// Dictionary Using Add() method
My_dict.Add(1123, "Welcome");
My_dict.Add(1124, "to");
My_dict.Add(1125, "GeeksforGeeks");
// Using ContainsKey() method to check
// the specified key is present or not
if (My_dict.ContainsKey(1122)==true)
{
Console.WriteLine("Key is found...!!");
}
else
{
Console.WriteLine("Key is not found...!!");
}
// Using ContainsValue() method to check
// the specified value is present or not
if (My_dict.ContainsValue("GeeksforGeeks")==true)
{
Console.WriteLine("Value is found...!!");
}
else
{
Console.WriteLine("Value is not found...!!");
}
}
}
Key is not found...!!
Value is found...!!