C# में Single.GetHashCode() मेथड वर्तमान Single (फ्लोट) इंस्टेंस के लिए हैश कोड लौटाता है। हैश कोड का उपयोग हैश-आधारित संग्रहों (जैसे HashSet, Dictionary) में त्वरित लुकअप के लिए किया जाता है।
सिंटैक्स
public override int GetHashCode ();
उदाहरण 1: दो फ्लोट मानों के हैश कोड की तुलना
using System;
public class Demo {
public static void Main() {
float f1 = 40.2f;
object f2 = 50.5f; // बॉक्स्ड फ्लोट
Console.WriteLine("Value1 = " + f1);
Console.WriteLine("HashCode of Value1 = " + f1.GetHashCode());
Console.WriteLine("Value2 = " + f2);
Console.WriteLine("HashCode of Value2 = " + f2.GetHashCode());
Console.WriteLine("Are both values equal? = " + f1.Equals(f2));
}
}
आउटपुट
Value1 = 40.2 HashCode of Value1 = 1109445837 Value2 = 50.5 HashCode of Value2 = 1112145920 Are both values equal? = False
उदाहरण 2: CompareTo के साथ हैश कोड
using System;
public class Demo {
public static void Main() {
float f1 = 15.3f;
float f2 = 35.9f;
Console.WriteLine("Value1 = " + f1);
Console.WriteLine("Hashcode for Value1 = " + f1.GetHashCode());
Console.WriteLine("Value2 = " + f2);
Console.WriteLine("Hashcode for Value2 = " + f2.GetHashCode());
Console.WriteLine("Is f1 and f2 equal? (CompareTo) = " + f1.CompareTo(f2));
}
}
आउटपुट
Value1 = 15.3 Hashcode for Value1 = 1098173645 Value2 = 35.9 Hashcode for Value2 = 1108318618 Is f1 and f2 equal? (CompareTo) = -1
हैश कोड के बारे में महत्वपूर्ण तथ्य
- समान मानों के लिए हैश कोड समान होता है (लेकिन विपरीत हमेशा सच नहीं)।
NaNका हैश कोड हमेशा स्थिर होता है।- हैश कोड का उपयोग
DictionaryऔरHashSetमें बाल्ट निर्धारित करने के लिए किया जाता है। - फ्लोटिंग-पॉइंट मानों के लिए, बिट पैटर्न सीधे हैश कोड को प्रभावित करता है।
सावधानी
फ्लोटिंग-पॉइंट नंबरों को हैश-आधारित संग्रहों में कुंजी के रूप में उपयोग करने से बचें क्योंकि परिशुद्धता के मुद्दों के कारण अप्रत्याशित व्यवहार हो सकता है।