क्या मुझे यह जांचना चाहिए कि में विशेष कुंजी मौजूद है या नहीं, अगर मुझे यकीन है कि इसे एक्सेस करने के लिए कोड तक पहुंचने तक मुझे शब्दकोश में जोड़ा जाएगा?क्या मुझे यह जांचना चाहिए कि इसे एक्सेस करने से पहले शब्दकोश में विशेष कुंजी मौजूद है या नहीं?
दो तरीके मैं शब्दकोश
- ContainsKey विधि जाँच में मूल्य का उपयोग कर सकते हैं। यदि यह सत्य लौटाता है तो मैं शब्दकोश वस्तु के सूचकांक [कुंजी] का उपयोग कर उपयोग करता हूं।
या
- TryGetValue जो बाहर पैरामीटर के माध्यम से सही या गलत के साथ ही वापसी मान वापस आ जाएगी।
(2 अगर मैं मूल्य प्राप्त करना चाहते हैं 1 की तुलना में बेहतर प्रदर्शन करेंगे। Benchmark।)
लेकिन अगर मुझे यकीन है कि समारोह जो वैश्विक शब्दकोश तक पहुँच रहा है निश्चित रूप से कुंजी होगा तो मैं अभी भी जांच होनी चाहिए हूँ TryGetValue का उपयोग करके या जांच किए बिना मुझे इंडेक्सर [] का उपयोग करना चाहिए।
या मुझे कभी यह नहीं मानना चाहिए और हमेशा जांचना चाहिए?
एक लापता कुंजी अक्सर एक और समस्या का संकेत है। यदि आप जानते हैं कि समस्या क्या है और एक और उपयोगी संदेश प्रदान कर सकती है, तो आपको अपने स्वयं के अपवाद को फेंकने पर विचार करना चाहिए क्योंकि 'KeyNotFoundException' के साथ संदेश कभी-कभी संकुचित करना मुश्किल होता है। –
यह निश्चित रूप से उपयोगी होगा यदि KeyNotFoundException ने भी कुंजी दी - लेकिन इसके अलावा, केवल स्टैक ट्रेस सामान्य रूप से मेरे लिए पर्याप्त है। आप इसे कितना दूर ले लेंगे: नलिका के लिए हर संभावित शून्य संदर्भ (केवल तर्क नहीं, बल्कि आंतरिक रूप से गैर-शून्य होने की अपेक्षा) की जांच करना और उनमें से प्रत्येक पर एक कस्टम अपवाद फेंकना? आंतरिक असंगतता के मामलों में ढांचे के बिट्स द्वारा हमेशा अपवादों को फेंक दिया जाएगा: यदि आप उनमें से प्रत्येक को अनुमान लगाने का प्रयास करते हैं, तो कोड प्रगति करने से त्रुटि मामलों के बारे में अधिक होता है। –