सेट अलग-अलग वैल्यू का संग्रह होता है। .NET में किसी सेट का डिफॉल्ट इम्प्लीमेंटेशन HashSet<T> है।
HashSet क्लास हर एलिमेंट का GetHashCode() मेथड इस्तेमाल करती है।
डिफॉल्ट रूप से, रेफरेंस टाइप के लिए GetHashCode() का इम्प्लीमेंटेशन उस ऑब्जेक्ट के मेमोरी लोकेशन का हैश लौटाता है। इसका मतलब है कि अलग-अलग रेफरेंस टाइप ऑब्जेक्ट का हैश कोड अलग होगा (इसे रेफरेंस इक्वलिटी कहते हैं)। वैल्यू टाइप डिफॉल्ट रूप से अपने फील्ड/प्रॉपर्टी का हैश लौटाते हैं। इसका मतलब है कि एक जैसी फील्ड/प्रॉपर्टी वैल्यू वाले अलग-अलग वैल्यू टाइप ऑब्जेक्ट का हैश कोड एक ही होगा (इसे स्ट्रक्चरल इक्वलिटी कहते हैं)।
आप अपनी खुद की क्लासों में GetHashCode() इम्प्लीमेंटेशन को ओवरराइड कर सकते हैं, जिसका इस्तेमाल आप किसी रेफरेंस टाइप में स्ट्रक्चरल इक्वलिटी लाने के लिए कर सकते हैं।