当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# Hashtable和Dictionary的区别用法及代码示例


C#,Dictionary是一个通用集合,通常用于存储键/值对。字典定义如下系统.集合.泛型命名空间。它本质上是动态的,意味着字典的大小根据需要而增长。例子:

C#


// C# program to illustrate Dictionary
using System;
using System.Collections.Generic;
class GFG {
    // Main Method
    static public void Main()
    {
        // Creating a dictionary
        // using Dictionary<TKey, TValue> class
        Dictionary<string, string> My_dict = 
                    new Dictionary<string, string>();
        // Adding key/value pairs in the Dictionary
        // Using Add() method
        My_dict.Add("a.01", "C");
        My_dict.Add("a.02", "C++");
        My_dict.Add("a.03", "C#");
        foreach(KeyValuePair<string, string> element in My_dict)
        {
            Console.WriteLine("Key:- {0} and Value:- {1}", 
                              element.Key, element.Value);
        }
    }
}

输出:

Key:- a.01 and Value:- C
Key:- a.02 and Value:- C++
Key:- a.03 and Value:- C#

哈希表是根据键的哈希码排列的键/值对的集合。或者换句话说,哈希表用于创建一个使用哈希表进行存储的集合。它是集合的非泛型类型,定义在System.Collections命名空间。在 Hashtable 中,键对象必须是不可变的,只要它们用作 Hashtable 中的键即可。例子:

C#


// C# program to illustrate a hashtable
using System;
using System.Collections;
class GFG {
    // Main method
    static public void Main()
    {
        // Create a hashtable
        // Using Hashtable class
        Hashtable my_hashtable = new Hashtable();
        // Adding key/value pair in the hashtable
        // Using Add() method
        my_hashtable.Add("A1", "Welcome");
        my_hashtable.Add("A2", "to");
        my_hashtable.Add("A3", "GeeksforGeeks");
        foreach(DictionaryEntry element in my_hashtable)
        {
            Console.WriteLine("Key:- {0} and Value:- {1} ",
                               element.Key, element.Value);
        }
    }
}

输出:

Key:- A3 and Value:- GeeksforGeeks 
Key:- A2 and Value:- to 
Key:- A1 and Value:- Welcome 

哈希表与字典

.math-table { border-collapse: 崩溃;宽度:100%; } .math-table td { 边框:1px 实心#5fb962; text-align:左!重要;内边距:8px; } .math-table th { 边框:1px 实心#5fb962;内边距:8px; } .math-table tr>th{ 背景颜色: #c6ebd9; vertical-align:中间; } .math-table tr:nth-child(奇数) { 背景颜色: #ffffff; }

哈希表 字典
A 哈希表是一个非泛型集合。 A 字典是一个通用集合。
Hashtable 是在 System.Collections 命名空间下定义的。 字典是在 System.Collections.Generic 命名空间下定义的。

它不维护存储值的顺序。

它始终保持存储值的顺序。

在Hashtable中,不需要指定键和值的类型。 在字典中,您必须指定键和值的类型。
由于装箱/拆箱,数据检索比字典慢。 由于没有装箱/拆箱,数据检索比 Hashtable 更快。
在 Hashtable 中,如果您尝试访问给定 Hashtable 中不存在的键,那么它将给出 null 值。 在字典中,如果您尝试访问给定字典中不存在的键,则会出现错误。
它是线程安全的。 它也是线程安全的,但仅适用于公共静态成员。


相关用法


注:本文由纯净天空筛选整理自ankita_saini大神的英文原创作品 Difference between Hashtable and Dictionary in C#。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。