Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में वर्तमान इंस्टेंस का हैश कोड प्राप्त करना (GetHashCode)

Object.GetHashCode() मेथड वर्तमान ऑब्जेक्ट के लिए हैश कोड लौटाता है। हैश कोड एक इंटीजर है जिसका उपयोग हैश-आधारित संग्रहों (जैसे Hashtable, Dictionary, HashSet) में त्वरित तुलना और संग्रहण के लिए किया जाता है।

उदाहरण 1: ऐरे टाइप का हैश कोड

using System;

public class Demo {
    public static void Main() {
        string[] arr = { "tom", "amit", "kevin", "katie" };
        
        // ऐरे का टाइप प्राप्त करें
        Type t1 = arr.GetType();
        
        // एलिमेंट टाइप प्राप्त करें (string)
        Type t2 = t1.GetElementType();
        
        Console.WriteLine("टाइप = " + t2.ToString());
        Console.WriteLine("हैश कोड = " + t1.GetHashCode());
    }
}

आउटपुट

टाइप = System.String
हैश कोड = 9144789

उदाहरण 2: एनम टाइप का हैश कोड और विवरण

using System;

public class Demo {
    public enum Vehicle { Car, Bus, Bike, Airplane }
    
    public static void Main() {
        try {
            Vehicle v = Vehicle.Bike;
            Type type = v.GetType();
            
            Console.WriteLine("हैश कोड = " + type.GetHashCode());
            
            // एनम नाम प्राप्त करें
            string[] names = type.GetEnumNames();
            Console.WriteLine("एनम नाम = " + string.Join(", ", names));
            
            // अंडरलाइंग टाइप
            Type underlying = type.GetEnumUnderlyingType();
            Console.WriteLine("एनम अंडरलाइंग टाइप = " + underlying);
            
            // एनम मान प्राप्त करें
            Array values = type.GetEnumValues();
            Console.WriteLine("एनम मान = " + values);
            
            Console.WriteLine("\nकॉन्स्टेंट्स सूची...");
            for (int i = 0; i < names.Length; i++) {
                Console.Write(names[i] + " ");
            }
        }
        catch (ArgumentException e) {
            Console.WriteLine("एनम नहीं है! " + e.Message);
        }
    }
}

आउटपुट

हैश कोड = 44757566
एनम नाम = Car, Bus, Bike, Airplane
एनम अंडरलाइंग टाइप = System.Int32
एनम मान = Demo+Vehicle[]

कॉन्स्टेंट्स सूची...
Car Bus Bike Airplane

GetHashCode महत्वपूर्ण नियम

  • समान ऑब्जेक्ट्स = समान हैश कोड: यदि a.Equals(b) तो a.GetHashCode() == b.GetHashCode() होना चाहिए।
  • विपरीत आवश्यक नहीं: समान हैश कोड का अर्थ समान ऑब्जेक्ट नहीं (कोलिजन संभव)।
  • स्थिरता: ऑब्जेक्ट के जीवनकाल में हैश कोड नहीं बदलना चाहिए (यदि इम्यूटेबल फील्ड्स पर आधारित है)।
  • प्रदर्शन: तेज़ गणना होनी चाहिए।

कस्टम क्लास में ओवरराइड करना

public class Person {
    public string Name { get; set; }
    public int Age { get; set; }
    
    public override bool Equals(object obj) {
        return obj is Person other && Name == other.Name && Age == other.Age;
    }
    
    public override int GetHashCode() {
        // संयुक्त हैश कोड (प्राइम नंबर्स का उपयोग)
        return HashCode.Combine(Name, Age); // .NET Core 2.1+
        // या मैन्युअल:
        // unchecked { return (Name?.GetHashCode() ?? 0) * 397 ^ Age; }
    }
}

चेतावनी

म्यूटेबल ऑब्जेक्ट्स में GetHashCode ओवरराइड करते समय सावधानी बरतें - यदि हैश कोड में उपयोग किए गए फील्ड्स बदलते हैं, तो ऑब्जेक्ट हैश-आधारित संग्रहों में "खो" सकता है।

  1. - C# में वर्तमान Int64 इंस्टेंस का हैश कोड प्राप्त करें

    C# में Int64 (या long) संरचना की GetHashCode() विधि का उपयोग करके वर्तमान इंस्टेंस का हैश कोड प्राप्त किया जा सकता है। यह विधि 32-बिट हस्ताक्षरित पूर्णांक लौटाती है जो मान के आधार पर गणना की जाती है। उदाहरण 1: दो अलग-अलग long मानों के हैश कोड using System; public class Demo { public static voi

  1. - C# में मान प्रकार Char के लिए TypeCode प्राप्त करें

    C# में char संरचना की GetTypeCode() विधि का उपयोग करके मान प्रकार Char का TypeCode प्राप्त किया जा सकता है। यह विधि TypeCode.Char एनम मान लौटाती है जो दर्शाता है कि यह प्रकार Char है। उदाहरण 1: Char के विभिन्न प्रॉपर्टी जांचना using System; public class Demo { public static void Main() {

  1. - पायथन में टाइप चेक करने का कैनोनिकल तरीका क्या है?

    यदि आप जांचना चाहते हैं कि कोई ऑब्जेक्ट x किसी दिए गए टाइप का बिल्कुल इंस्टेंस है (सबटाइप नहीं), तो आप type का उपयोग करके उसका टाइप प्राप्त कर सकते हैं और is स्टेटमेंट का उपयोग करके जांच सकते हैं। उदाहरण x = Hello if type(x) is str: print(x is an instance of str) आउटपुट यह आउटपुट देगा: x is an