在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 值。 | 在字典中,如果您嘗試訪問給定字典中不存在的鍵,則會出現錯誤。 |
它是線程安全的。 | 它也是線程安全的,但僅適用於公共靜態成員。 |
相關用法
- C# Hashtable用法及代碼示例
- C# HashSet用法及代碼示例
- C# HybridDictionary用法及代碼示例
- C# String Clone()用法及代碼示例
- C# String Compare()用法及代碼示例
- C# String CompareOrdinal()用法及代碼示例
- C# String CompareTo()用法及代碼示例
- C# String Concat()用法及代碼示例
- C# String Contains()用法及代碼示例
- C# String Copy()用法及代碼示例
- C# String CopyTo()用法及代碼示例
- C# String EndsWith()用法及代碼示例
- C# String Equals()用法及代碼示例
- C# String Format()用法及代碼示例
- C# String GetEnumerator()用法及代碼示例
- C# String IndexOf()用法及代碼示例
- C# String Insert()用法及代碼示例
- C# String IsInterned()用法及代碼示例
- C# String IsNormalized()用法及代碼示例
- C# String IsNullOrEmpty()用法及代碼示例
- C# String IsNullOrWhiteSpace()用法及代碼示例
- C# String Join()用法及代碼示例
- C# String LastIndexOf()用法及代碼示例
- C# String LastIndexOfAny()用法及代碼示例
- C# String Normalize()用法及代碼示例
注:本文由純淨天空篩選整理自ankita_saini大神的英文原創作品 Difference between Hashtable and Dictionary in C#。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。