কম্পিউটার টিউটোরিয়াল

C#-এ UInt64.GetHashCode() মেথড: হ্যাশ কোড জেনারেট করা


C#-এ UInt64.GetHashCode() মেথডটি বর্তমান UInt64 (ulong) ইনস্ট্যান্সের জন্য একটি হ্যাশ কোড (hash code) ফেরত দেয়। হ্যাশ কোড হ্যাশ টেবিল এবং ডিকশনারি-রافته ডেটা স্ট্রাকচারে দ্রুত লুকআপের জন্য ব্যবহৃত হয়।

সিনট্যাক্স (Syntax)

public override int GetHashCode();

উদাহরণ ১: সাধারণ মান এবং MinValue

using System;

public class Demo
{
    public static void Main()
    {
        ulong val1 = 8768768;
        ulong val2 = UInt64.MinValue; // 0
        
        Console.WriteLine("HashCode for val1 = " + val1.GetHashCode());
        Console.WriteLine("HashCode for val2 = " + val2.GetHashCode());
    }
}

আউটপুট

HashCode for val1 = 8768768
HashCode for val2 = 0

উদাহরণ ২: বড় মান এবং MaxValue

using System;

public class Demo
{
    public static void Main()
    {
        ulong val1 = 89879878;
        ulong val2 = UInt64.MaxValue; // 18446744073709551615
        
        Console.WriteLine("HashCode for val1 = " + val1.GetHashCode());
        Console.WriteLine("HashCode for val2 = " + val2.GetHashCode());
    }
}

আউটপুট

HashCode for val1 = 89879878
HashCode for val2 = 0

গুরুত্বপূর্ণ পর্যবেক্ষণ: MaxValue-এর হ্যাশ কোড ০ কেন?

UInt64.MaxValue (১৮৪৪৬৭৪৪০৭৩৭০৯৫৫১৬১৫) এর হ্যাশ কোড 0 ফেরত দেয়। এর কারণ হলো GetHashCode() ইমপ্লিমেন্টেশনে সাধারণত নিচের অ্যালগরিদম ব্যবহার করা হয়:

// সরলীকৃত সংস্করণ
public override int GetHashCode()
{
    return (int)(this ^ (this >> 32));
}

UInt64.MaxValue-এর বাইনারি রিপ্রেজেন্টেশন সব ১ (৬৪টি ১)। XOR অপারেশনের ফলে নিচের ৩২ বিট ০ হয়, ফলে হ্যাশ কোড ০ হয়।

হ্যাশ কোডের বৈশিষ্ট্য

  • দ্রুত লুকআপ: Dictionary<ulong, T>, HashSet<ulong>-এ O(1) লুকআপ
  • কনসিস্টেন্সি: একই মান একই হ্যাশ কোড দেবে (একই প্রসেসে)
  • কলিশন সম্ভব: ভিন্ন ভিন্ন ulong মান একই হ্যাশ কোড দিতে পারে
  • Equals() সাথে সামঞ্জস্যপূর্ণ: সমান মান একই হ্যাশ কোড দেবে

Dictionary-এ ব্যবহার উদাহরণ

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Dictionary cache = new Dictionary();
        
        ulong key1 = 123456789012345UL;
        ulong key2 = UInt64.MaxValue;
        
        cache[key1] = "Data 1";
        cache[key2] = "Data 2";
        
        Console.WriteLine($"Key1 Hash: {key1.GetHashCode()}");
        Console.WriteLine($"Key2 Hash: {key2.GetHashCode()}");
        Console.WriteLine($"Retrieved: {cache[key1]}, {cache[key2]}");
    }
}

সতর্কতা: হ্যাশ কোড সিকিউরিটি-ক্রিটিক্যাল কাজে ব্যবহার করা উচিত নয়। ক্রিপ্টোগ্রাফিক হ্যাশের জন্য SHA256 বা অন্য অ্যালগরিদম ব্যবহার করুন।

  1. C#-এ UInt64.GetTypeCode() মেথড: UInt64-এর টাইপ কোড পেতে

  2. C#-এ UInt64.Equals() মেথড: ulong মান তুলনা করা

  3. C#-এ UInt64.CompareTo() মেথড: ulong মান ক্রমবিন্যাস জানতে

  4. C#-এ UInt16.GetHashCode() মেথড উদাহরণসহ