मैं समझने की कोशिश कर रहा हूं कि object.GetHashCode()
का उपयोग किस लिए किया जाता है। मैंने पढ़ा है कि संग्रहों द्वारा विशिष्ट रूप से कुंजी की पहचान करने के लिए इसका उपयोग किया जाता है। लेकिन मैं इसका परीक्षण करना चाहता था और नतीजा यह नहीं था कि मुझे क्या उम्मीद थी।GetHashCode() क्यों मायने रखता है?
struct Animal
{
public string Name { get; set; }
public int Age { get; set; }
public Animal(string name, int age) : this()
{
Name = name;
Age = age;
}
public override int GetHashCode()
{
return Age.GetHashCode();
}
}
object doggy = new Animal("Dog", 25);
object cat = new Animal("Cat", 25);
Hashtable table = new Hashtable();
table.Add(doggy, "Dog");
table.Add(cat, "Cat");
Console.WriteLine("{0}", table[cat]);
Console.WriteLine("{0}", table[doggy]);
मैं अधिलेखित कर देगा "डॉग" "कैट" या मुझे बता कि "कुंजी पहले से मौजूद" लेकिन उत्पादन
"कैट" "डॉग" है त्रुटि के कुछ प्रकार की उम्मीद है |
बीटीडब्ल्यू - यह सवाल से संबंधित नहीं है, लेकिन इस परिदृश्य के लिए 'स्ट्रक्चर' बहुत खराब विकल्प है। यदि संदेह है, तो 'वर्ग' का उपयोग करें। यदि संदेह में नहीं है, तो शायद अभी भी 'कक्षा' का उपयोग करें। यह * अत्यधिक * (वैध रूप से) सी # में 'संरचना' घोषित करने के लिए दुर्लभ है। –
हाँ, मैं सहमत हूं, वास्तव में परीक्षण मूल रूप से कक्षा के साथ था, लेकिन मैंने यह देखने के लिए स्ट्रक्चर को बदलने की कोशिश की कि क्या यह अंतर भिन्न है :) –