ภาพรวม
Hashtable มีเมธอด GetHash(object key) คืนรหัสแฮช (hash code) ที่ใช้ภายในสำหรับคีย์ที่ระบุ (protected method ต้องสร้างคลาส繼承เพื่อเรียกใช้)
ตัวอย่างที่ 1: HashCode ของคีย์ "D"
using System;
using System.Collections;
public class HashCode : Hashtable
{
public static void Main(string[] args)
{
HashCode hash = new HashCode();
hash.Add("A", "Jacob");
hash.Add("B", "Mark");
hash.Add("C", "Tom");
hash.Add("D", "Nathan");
hash.Add("E", "Tim");
hash.Add("F", "John");
hash.Add("G", "Gary");
Console.WriteLine("Key and Value pairs...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} and {1} ", entry.Key, entry.Value);
}
Console.Write("HashCode for key D =" + (hash.GetHash("D")));
}
}
ผลลัพธ์
Key and Value pairs... G and Gary A and Jacob B and Mark C and Tom D and Nathan E and Tim F and John HashCode for key D = -842352676
ตัวอย่างที่ 2: HashCode ของคีย์เป็น char
using System;
using System.Collections;
public class HashCode : Hashtable
{
public static void Main(string[] args)
{
HashCode hash = new HashCode();
hash.Add('1', "One");
hash.Add('2', "Two");
hash.Add('3', "Three");
hash.Add('4', "Four");
Console.WriteLine("Key and Value pairs...");
foreach (DictionaryEntry entry in hash)
{
Console.WriteLine("{0} and {1} ", entry.Key, entry.Value);
}
Console.WriteLine("HashCode for key 1 = " + (hash.GetHash('1')));
Console.WriteLine("HashCode for key 2 = " + (hash.GetHash('2')));
Console.WriteLine("HashCode for key 3 = " + (hash.GetHash('3')));
Console.WriteLine("HashCode for key 4 = " + (hash.GetHash('4')));
}
}
ผลลัพธ์
Key and Value pairs... 3 and Three 2 and Two 4 and Four 1 and One HashCode for key 1 = 3211313 HashCode for key 2 = 3276850 HashCode for key 3 = 3342387 HashCode for key 4 = 3407924
สรุป
GetHashเป็น protected ต้องสร้าง subclass เพื่อเรียก (เหมือนตัวอย่าง)- รหัสแฮชใช้สำหรับจัดเก็บภายใน Hashtable ไม่ควรนำไปใช้เป็น unique identifier
- ใน .NET ใหม่ ควรใช้
Dictionary<TKey, TValue>แทน Hashtable