📜  带有示例的C#词典

📅  最后修改于: 2021-05-29 22:57:44             🧑  作者: Mango

在C#中,Dictionary是通用集合,通常用于存储键/值对。 Dictionary的工作与非通用哈希表非常相似。 Dictionary的优点是,它是泛型类型。字典在System.Collection.Generic命名空间下定义。它本质上是动态的,意味着字典的大小根据需要而增加。

重要事项:

  • Dictionary类实现了
    • IDictionary 接口
    • IReadOnlyCollection >接口
    • IReadOnlyDictionary 接口
    • 词典界面
  • 在字典中,键不能为null,但值可以为null。
  • 在字典中,键必须是唯一的。如果您尝试使用重复键,则不允许重复键,然后编译器将引发异常。
  • 在字典中,您只能存储相同类型的元素。
  • 词典的容量是词典可以容纳的元素数量。

如何创建字典?

Dictionary类有7个用于创建Dictionary的构造函数,这里我们仅使用Dictionary ()构造函数,如果您想了解有关构造函数的更多信息,请参考C#| The。字典类

Dictionary ():此构造函数用于创建Dictionary 类的实例,该实例为空,具有默认的初始容量,并对密钥类型使用默认的相等比较器,如下所示:

步骤1:借助using关键字在程序中包含IncludeSystem.Collection.Generics命名空间。

句法:

using System.Collection.Generics; 

步骤2:使用Dictionary 类创建一个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...!!