Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การดึงรหัสแฮชของคีย์ที่ระบุใน Hashtable ใน C#

ภาพรวม

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