आप अशक्त उपयोग करने से बचें और एक विशेष सिंगलटन मूल्य वर्ग वही चीज़ बना सकते हैं। उदाहरण के लिए:
public sealed class Nothing
{
public static readonly Nothing Value = new Nothing();
private Nothing() {}
}
Dictionary<object, string> dict = new Dictionary<object, string>();
dict.add(Nothing.Value, "Nothing");
dict.add(1, "One");
यह दृष्टिकोण काम करने के लिए असफल हो अगर आप अपने संग्रह और अधिक दृढ़ता से टाइप किया करने का इरादा होगा - के उदाहरण आप कुंजी एक स्ट्रिंग होना चाहता हूँ के लिए मान लीजिए। चूंकि स्ट्रिंग को सील कर दिया गया है, इसलिए आप इसके लिए "विशेष मूल्य" विकल्प बनाने के लिए प्राप्त नहीं कर सकते हैं। आपके विकल्प थोड़ा और जटिल हो जाते हैं। आप:
- "खाली"/"शून्य" केस का प्रतिनिधित्व करने के लिए कुछ विशेष स्थिर मूल्य बनाएं। हैकी की तरह और निश्चित रूप से भ्रम के लिए एक रास्ता है। यह एक व्यावहारिक दृष्टिकोण हो सकता है यदि शब्दकोश कुछ कार्यान्वयन वर्ग के लिए पूरी तरह से निजी है और आप कुछ जगहों पर कुंजी का अनुवाद कैसे करते हैं, इस बारे में ज्ञान फैलाने से बचने के लिए आप कुछ एनकोड/डिकोड उपयोगिता विधियां लिख सकते हैं।
- IDictionary का अपना कार्यान्वयन बनाएं जो आंतरिक रूप से एक शब्दकोश <> उदाहरण के लिए प्रतिनिधि करता है - शून्य के मामले को छोड़कर। यह IDictionary <> इंटरफ़ेस के लिए प्रलेखित अपेक्षाओं का उल्लंघन करता है जो कहता है कि शून्य कुंजी को अपवाद फेंकना चाहिए। लेकिन अगर आप अपनी वास्तविक समस्या को हल करने का एकमात्र तरीका है तो आप इससे दूर हो सकते हैं। यह केवल तभी काम करता है जब आप शब्दकोश का उदाहरण बनाते हैं और बनाते हैं।
- शब्दकोश में "शून्य" कुंजी संग्रहीत किए बिना अपनी समस्या का समाधान करने का एक तरीका खोजें। उदाहरण के लिए, शब्दकोश में शून्य कुंजी को पॉप्युलेट करने पर विचार न करें और इसके साथ निपटने के लिए कुछ विशेष केस तर्क रखें। कुंजी को हड़ताली होना चाहिए और अंतर्निहित कार्यान्वयन के साथ काम करने के लिए तुलनीय होना चाहिए, यही कारण है कि सामान्य रूप से शून्य निषिद्ध है।
एक तरफ के रूप में, क्या आपकी शब्दकोश कुंजी को वास्तव में object
होने की कुंजी की आवश्यकता है? यह संदर्भ समानता के कारण सूक्ष्म बग का कारण बन सकता है जहां आप तुलना के आधार के रूप में मूल्यांकन के बराबर बराबर() का मूल्यांकन कर सकते हैं।
बस उत्सुक जहाँ आप इस की ज़रूरत है? धन्यवाद –