कुछ विरासत कोड में, मुझे एक नया कुंजी-मूल्य आइटम जोड़ने या यदि पहले से मौजूद कुंजी है, तो मूल्य को अपडेट करने की सुविधा के लिए निम्नलिखित विस्तार विधि देखें।
विधि -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 को प्रतिस्थापित कर दूं? क्या यह किसी भी संभावित परिदृश्य में टूट जाएगा?
इसके अलावा, मुझे लगता है कि यह हैशटेबल और डिक्शनरी के बीच का अंतर था। हैशटेबल किसी आइटम को अपडेट करने की अनुमति देता है, या इंडेक्सर का उपयोग करके एक नया आइटम जोड़ने की अनुमति देता है, जबकि शब्दकोश नहीं करता है !! क्या यह अंतर C #> 3.0 संस्करणों में समाप्त हो गया है?
यदि उपयोगकर्ता समान कुंजी-मान फिर से भेजता है, तो इस पद्धति का उद्देश्य भी अपवाद नहीं है, विधि को नए मान के साथ प्रविष्टि को अद्यतन करना चाहिए, और यदि नया कुंजी-मान युग्म विधि में भेजा गया है तो एक नई प्रविष्टि करें ।