C# में UInt64.GetHashCode() मेथड वर्तमान UInt64 इंस्टेंस के लिए हैश कोड लौटाता है। हैश कोड का उपयोग हैश-आधारित संग्रह (जैसे HashSet, Dictionary) में त्वरित लुकअप के लिए किया जाता है।
सिंटैक्स
public override int GetHashCode ();
उदाहरण 1: सामान्य मान और MinValue
using System;
public class Demo
{
public static void Main()
{
ulong val1 = 8768768;
ulong val2 = UInt64.MinValue;
Console.WriteLine("HashCode for val1 = " + val1.GetHashCode());
Console.WriteLine("HashCode for val2 = " + val2.GetHashCode());
}
}
आउटपुट
HashCode for val1 = 8768768 HashCode for val2 = 0
उदाहरण 2: बड़ा मान और MaxValue
using System;
public class Demo
{
public static void Main()
{
ulong val1 = 89879878;
ulong val2 = UInt64.MaxValue;
Console.WriteLine("HashCode for val1 = " + val1.GetHashCode());
Console.WriteLine("HashCode for val2 = " + val2.GetHashCode());
}
}
आउटपुट
HashCode for val1 = 89879878 HashCode for val2 = 0
नोट: मूल स्रोत में त्रुटि
मूल स्रोत के दूसरे उदाहरण में टिप्पणी UInt32.GetHashCode() कहती है लेकिन कोड UInt64 का उपयोग करता है। यह UInt64.GetHashCode() का सही उदाहरण है।
हैश कोड व्यवहार विश्लेषण
उदाहरणों से स्पष्ट है कि UInt64 के लिए GetHashCode() आमतौर पर मान के निचले 32 बिट्स को int के रूप में लौटाता है:
8768768→8768768(32-बिट रेंज में)0(MinValue) →089879878→89879878(32-बिट रेंज में)UInt64.MaxValue(18446744073709551615) →0(निचले 32 बिट्स 0 हैं)
सत्यापन कोड
ulong max = UInt64.MaxValue; // 0xFFFFFFFFFFFFFFFF int lower32 = (int)(max & 0xFFFFFFFF); // 0xFFFFFFFF = -1 (साइन्ड) या 4294967295 (अनसाइन्ड) // लेकिन GetHashCode() 0 लौटाता है, इसलिए कार्यान्वयन भिन्न हो सकता है
महत्वपूर्ण विचार
- हैश कोड समानता नहीं दर्शाता** - दो अलग मानों का समान हैश कोड हो सकता है (कोलिजन)
- Dictionary/HashSet में कुंजी के रूप में उपयोग करते समय Equals() भी जांचा जाता है
- हैश कोड रनटाइम संस्करणों के बीच बदल सकता है - स्थायी भंडारण के लिए उपयुक्त नहीं
- सुरक्षा-संवेदनशील संदर्भों के लिए क्रिप्टोग्राफिक हैश (SHA256 आदि) का उपयोग करें
संबंधित मेथड्स
- UInt64.Equals() - वास्तविक मान समानता जांच
- UInt64.CompareTo() - क्रम तुलना
- GetHashCode() - सभी प्रकारों के लिए Object से विरासत में मिला