मैं जगह पर देख रहा हूं, लेकिन मुझे कुछ भी नहीं मिला। क्या कोई इस पर रोशनी डाल सकता है?Int32 के लिए GetHashCode() कैसे कार्यान्वित किया गया है?
उत्तर
परावर्तक के अनुसार:
public override int GetHashCode()
{
return this;
}
भावना बनाता है, यह करता है?
32 बिट के लिए हैश 32 बिट मान का सबसे अच्छा तरीका व्हील का आविष्कार नहीं करना है, मूल्य का उपयोग करें। बहुत तेज, कोई टक्कर नहीं, वास्तव में एक सही तरीका है।
हां नहीं है, लेकिन इसका मतलब यह नहीं है कि इसे इस तरह कार्यान्वित किया गया था। :) –
असल में यह इसे लागू करने का एक अजीब तरीका है। प्रति एमएस "सर्वोत्तम प्रदर्शन के लिए, एक हैश फ़ंक्शन को सभी इनपुट के लिए भी वितरण उत्पन्न करना चाहिए, जिसमें अत्यधिक क्लस्टर किया गया इनपुट शामिल है। एक निहितार्थ यह है कि ऑब्जेक्ट को ऑब्जेक्ट करने के लिए छोटे संशोधनों के परिणामस्वरूप हैश कोड के लिए परिणामी हैश कोड में बड़े बदलाव हो सकते हैं प्रदर्शन।" (http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx) यह क्रियान्वयन खराब क्लस्टरिंग के कारण सरल होता है और जब इन्सटेबल कुंजी के रूप में इनट्स का उपयोग किया जाता है तो यह भयानक प्रदर्शन कर सकता है। –
@JeffWalkerCodeRanger यह आमतौर पर सच है। लेकिन अधिकांश हैश टेबल को 'हैशकोड% बाल्टी लम्बाई' करके कार्यान्वित किया जाता है। इसलिए '0, 1, 2, 3, ... के सामान्य अनुक्रम में सही हैश कोड होंगे। हालांकि, यदि आपका इनपुट '0, 32, 64, 96, 128 है, ... 'किसी भी बिजली की दो बाल्टी आकार सरणी <= 32 में 100% हैश टकराव होंगे। अगर एमएस इसे थोड़ा सा शफल करने के लिए बदल देगा, तो एक और अनुक्रम होगा जो 100% हैश टकराव देगा। मेरा मुद्दा यह है कि इंट 32 के लिए कोई संदर्भ नहीं है, और संदर्भ के बिना, आप एक अच्छा हैश फ़ंक्शन नहीं बना सकते हैं। यदि आपको हैश डेटा की आवश्यकता है, तो अपना खुद का हैशर लिखें। – Aidiakapi
- 1. __RTC_CheckEsp कैसे कार्यान्वित किया गया है?
- 2. GetHashCode को सही ढंग से कार्यान्वित करना
- 3. विंडोज पर पाइथन मल्टीप्रोसेसिंग कैसे कार्यान्वित किया गया है?
- 4. IEqualityComparer <double>; GetHashCode को कैसे कार्यान्वित करें?
- 5. जावालाइन के लिए Google App Engine में डेडलाइन एक्स्प्लेड अपवाद कैसे कार्यान्वित किया गया है?
- 6. लेक्सिकल स्कोपिंग कैसे कार्यान्वित किया जाता है?
- 7. टेक्स्ट पर जेडडिटरपेन में कैसे कार्यान्वित किया गया
- 8. pthread_join कैसे कार्यान्वित किया जाता है?
- 9. MyAssembly.XmlSerializers.dll के लिए जेनरेट किया गया है?
- 10. Int32
- 11. अतिरंजित विधि को कॉल करने के लिए कैसे ओवरलोड किया गया है?
- 12. Int32? IComparable
- 13. ऑब्जेक्ट.गेटहाशकोड() सीएलआर और जेवीएम में कैसे कार्यान्वित किया जाता है?
- 14. हम वास्तव में कैसे implenting किया जाना चाहिए बराबर है और GetHashCode NHibernate संस्थाओं के लिए
- 15. "कॉन्स्ट" कैसे कार्यान्वित किया जाता है?
- 16. एप्लिकेशन वर्चुअलाइजेशन कैसे कार्यान्वित किया जाता है?
- 17. std :: tuple कैसे कार्यान्वित किया जाता है?
- 18. ओपनआईडी कैसे कार्यान्वित किया जाता है?
- 19. GetHashCode और Equals को System.Attribute में गलत तरीके से लागू किया गया है?
- 20. बिगडिसीमल कैसे कार्यान्वित किया जाता है?
- 21. समानांतर कोड के लिए स्केलेबिलिटी कैसे परिभाषित किया गया है?
- 22. जावा 6 enums के लिए मूल्य() लागू किया गया है?
- 23. कार्यान्वयन GetHashCode
- 24. LINQ से इकाइयों को Int32 get_Item (Int32)
- 25. सी # सामान्य प्रकार बॉक्स किया गया है?
- 26. यादृच्छिक() फ़ंक्शन के अंदर - यह कैसे कार्यान्वित किया जाता है?
- 27. GetHashCode() को ओवरराइड करने के लिए कब?
- 28. GetHashCode() क्यों मायने रखता है?
- 29. ReSharper GetHashCode ओवरराइड के लिए '397' का उपयोग क्यों किया जाता है?
- 30. क्यों नहीं (->) Control.Monad के साथ कार्यान्वित नहीं किया गया है। डिफ़ॉल्ट रूप से
मुझे लगता है। मैं सोच रहा था कि सभी मूल्य प्रकारों का एक आम कार्यान्वयन होगा। –
नहीं, प्रत्येक मान प्रकार का अपना स्वयं का है। UInt32 स्वयं को Int32 पर रखता है, यह बस स्वयं को एक हस्ताक्षरित int में बदल देता है। Int16 और Int64 32-बिट मान उत्पन्न करने के लिए कुछ फंकी बिट स्थानांतरण करते हैं। सिस्टम.बोलियन इसके राज्य के आधार पर 0 या 1 देता है। –
इंटेरेसिंग, फिर क्यों 'int = 10;' और 'int b = 10.GetHashCode();' विभिन्न x86 निर्देश प्रदान करता है। हम देखते हैं कि यह एक-पंक्ति विधि रेखांकित की जाएगी, इसलिए यह वही होना चाहिए लेकिन यह –