क्यों न केवल null
क्यों संग्रह करते हैं जब संग्रह में अनुक्रमण के लिए एक अवैध कुंजी का उपयोग किया जाता है?शब्दकोश में अमान्य कुंजी
13
A
उत्तर
25
उपयोग करने का प्रयास है, और अशक्त एक मूल्य के प्रकार के लिए मान्य नहीं है। उदाहरण के लिए:
var dict = new Dictionary<string, DateTime>();
DateTime date;
if (dict.TryGetValue("foo", out date)) {
// Key was present; date is set to the value in the dictionary.
} else {
// Key was not present; date is set to its default value.
}
इसके अलावा, एक शब्दकोश है कि संदर्भ प्रकार संग्रहीत करता है अभी भी शून्य मान स्टोर करेगा:
var dict = new Dictionary<string, DateTime>();
DateTime date = dict["foo"]; // What should happen here? date cannot be null!
इसके बजाय आप शब्दकोश के TryGetValue विधि का उपयोग करना चाहिए। और आपका कोड "कुंजी मौजूद नहीं है" से अलग होने के लिए "मान शून्य है" पर विचार कर सकता है।
3
माइक्रोसॉफ्ट फैसला किया है कि =)
एक इनलाइन की जाँच करें कि बचने के लिए।
object myvalue = dict.ContainsKey(mykey) ? dict[mykey] : null;
5
सामान्य शब्दकोशों एक मान प्रकार के उदाहरण हो सकता है क्योंकि
या शायद
3
व्यावहारिक कारण: क्योंकि एक शब्दकोश शून्य मूल्य को स्टोर कर सकता है। आप अपने परिदृश्य में अपवाद के साथ इस मामले को अलग करने में सक्षम नहीं होंगे।
2
संबंधित मुद्दे
- 1. शब्दकोश कुंजी
- 2. एक शब्दकोश में गणना कुंजी?
- 3. cPickle.UnpicklingError: अमान्य लोड कुंजी
- 4. एक सामान्य शब्दकोश कुंजी
- 5. मिल कुंजी शब्दकोश
- 6. शब्दकोश स्ट्रिंग कुंजी
- 7. केस संवेदनशील शब्दकोश कुंजी
- 8. कुंजी के साथ पाइथन शब्दकोश कुंजी
- 9. 2 डी शब्दकोश प्रति कुंजी एकाधिक कुंजी
- 10. Unpickling त्रुटि अमान्य लोड कुंजी, '{'
- 11. शब्दकोश में एक कुंजी का नाम बदलें
- 12. एक शब्दकोश में कुंजी/मूल्य जोड़े जोड़ना
- 13. मैट्रिक्स के रूप में शब्दकोश कुंजी
- 14. सी # सूची के रूप में शब्दकोश कुंजी
- 15. अगर एक कुंजी एक शब्दकोश में exsists
- 16. अमान्य एईएस कुंजी लंबाई त्रुटि
- 17. शब्दकोश Func के साथ कुंजी
- 18. शब्दकोश दो कुंजी के साथ?
- 19. एक शब्दकोश की कुंजी बदलना
- 20. अनुकूलन आंशिक शब्दकोश कुंजी मैच
- 21. रैंडम अजगर शब्दकोश कुंजी, मूल्यों
- 22. एक शब्दकोश वस्तु जो कुंजी
- 23. तरह शब्दकोश कुंजी लंबाई द्वारा
- 24. शब्दकोश का अंतर। जोड़ें बनाम शब्दकोश [कुंजी] = मूल्य
- 25. शब्दकोश मूल्य का उपयोग कर शब्दकोश कुंजी प्राप्त करें
- 26. शब्दकोश के भीतर एक शब्दकोश में जोड़ना
- 27. कुंजी के संबंध में जगह में एक शब्दकोश छंटाई
- 28. कुंजी नाम से शब्दकोश से एक कुंजी निकालें
- 29. शब्दकोश कुंजी पर "पसंद" कैसे करें?
- 30. वैकल्पिक हल: जावास्क्रिप्ट शब्दकोश जो कुंजी
यह वास्तव में डिजाइन निर्णय के कारण का पता नहीं है; वे आसानी से इसे शून्य के बजाय 'डिफॉल्ट (डेटटाइम)' वापस कर सकते थे। – Extragorey
@Extragorey हां यह विशेष रूप से अंतिम वाक्य करता है: जो भी "नहीं मिला" मान है, आपको उस मूल्य को सार्थक के रूप में स्टोर करने की आवश्यकता हो सकती है। यदि कोई कुंजी नहीं मिलती है जो 'डिफ़ॉल्ट (दिनांक समय)' नहीं लौटाती है, तो आप कम से कम एक अतिरिक्त कॉल के बिना "मान डिफ़ॉल्ट '(दिनांक समय)' "और" कुंजी मौजूद नहीं है "के बीच अंतर नहीं कर सकते हैं। ConteyKey() '(जो ऑपरेशन की लागत को अनावश्यक रूप से दोगुना कर देगा)। एक शब्दकोष के लिए मान के रूप में संदर्भ प्रकार युक्त, शायद 'शून्य' एक अर्थपूर्ण स्थिति है "कुंजी मौजूद नहीं है" के अलावा। – cdhowie
धन्यवाद, यह स्पष्टीकरण अधिक समझ में आता है। – Extragorey