कुछ विरासत कोड में मुझे एक नई कुंजी-मूल्य वस्तु जोड़ने या मूल्य को अपडेट करने के लिए निम्न एक्सटेंशन विधि दिखाई देती है, यदि कुंजी पहले से मौजूद है।शब्दकोश जोड़ने के लिए नया या नया आइटम जोड़ने का तरीका
विधि -1 (विरासत कोड)।
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
if (map.ContainsKey(key))
{
map[key] = value;
}
else
{
map.Add(key, value);
}
}
हालांकि, मैं जाँच की है कि map[key]=value
बिल्कुल वैसा ही काम करता है है। यही है, इस विधि को नीचे विधि 2 के साथ प्रतिस्थापित किया जा सकता है।
विधि -2।
public static void CreateNewOrUpdateExisting<TKey, TValue>(
this IDictionary<TKey, TValue> map, TKey key, TValue value)
{
map[key] = value;
}
अब, मेरा प्रश्न है .. क्या विधि-2 द्वारा विधि -1 को प्रतिस्थापित करने में कोई समस्या हो सकती है? क्या यह किसी भी संभावित परिदृश्य में टूट जाएगा?
इसके अलावा, मुझे लगता है कि यह हैशटेबल और डिक्शनरी के बीच का अंतर होता था। हैशटेबल किसी आइटम को अपडेट करने की अनुमति देता है, या इंडेक्सर का उपयोग करके एक नया आइटम जोड़ता है जबकि डिक्शनरी नहीं है !! क्या यह अंतर सी #> 3.0 संस्करणों में समाप्त हो गया है?
यदि उपयोगकर्ता एक ही कुंजी-मूल्य भेजता है, तो इस विधि का उद्देश्य बहुत ही अपवाद नहीं है, विधि को केवल नए मान के साथ प्रविष्टि को अपडेट करना चाहिए, और नई कुंजी-मूल्य जोड़ी होने पर नई प्रविष्टि करने के लिए विधि को भेजें।