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 বা অন্য অ্যালগরিদম ব্যবহার করুন।