जब मैंने पहली बार सी # में प्रोग्राम शुरू करना शुरू किया, तो मैंने तुरंत एसटीएल के मानचित्र के बराबर की तलाश की, और शब्दकोश के बारे में सीखा।क्या कोई यह समझा सकता है कि क्यों <> सी # # एसटीएल में मानचित्र <T,U> की तरह काम नहीं करता है?
अद्यतन नीचे इस कचरे को पार कर गया, मैं पूरी तरह से गलत था। एसटीएल के मानचित्र के साथ मेरा अनुभव यह था कि जब मैंने इसे मूल्य के लिए अनुरोध किया था तो मुझे नफरत थी, और यदि कुंजी मानचित्र में नहीं थी, तो यह स्वचालित रूप से मूल्य प्रकार (जो भी इसके डिफ़ॉल्ट कन्स्ट्रक्टर ने किया था) बनायेगा और इसे मानचित्र में जोड़ देगा। मुझे कोड में इस स्थिति की जांच करनी होगी और अपवाद फेंकना होगा।
शब्दकोश <> पूरे शेबैंग सही हो जाता है - यदि कुंजी नहीं है, तो यदि आप मान का अनुरोध कर रहे हैं तो यह अपवाद फेंकता है, या यदि यह नहीं है और स्वचालित रूप से इसे जोड़ना है तो आप इसे जोड़ना चाहते हैं।
लेकिन आप सभी पहले से ही यह जानते थे। यहां पोस्ट करने से पहले मुझे अपने यूनिट परीक्षणों को लिखा होगा और खुद को शर्मिंदा करना चाहिए। :) वे अब लिखे गए हैं!
अब मैं शब्दकोश और सभी से प्यार है, लेकिन बात यह है कि कीड़े मुझे सबसे ज्यादा के बारे में यह अभी कि अगर कुंजी शब्दकोश में नहीं है, यह एक KeyNotFoundException फेंकता है। इसलिए, मैं हमेशा इस तरह कोड लिखने की जरूरत है:
Dictionary<string,string> _mydic;
public string this[string key]
{
get {
return _mydic[key]; // could throw KeyNotFoundException
}
set {
if(_mydic.ContainsKey(key))
_mydic[key] = value;
else
_mydic.Add(key, value);
}
}
क्यों स्वचालित रूप से डिक्शनरी नहीं करता है तो कुंजी मौजूद नहीं है महत्वपूर्ण मूल्य जोड़ी जोड़ने के लिए, एसटीएल के मानचित्र की तरह?
अब मजाकिया बात यह है कि पिछले जीवन में, मुझे परेशान होता था क्योंकि मुझे अक्सर मानचित्र को रोकने से रोकने की कोशिश की जाती थी। मुझे लगता है कि मेरे उपयोग के मामले अभी थोड़ा अलग हैं।
मेरा आंत जवाब होगा क्योंकि 'शब्दकोश <टीकेई, टेलीमेंट>' को कभी भी एसटीएल 'मानचित्र' को दोहराने के लिए डिज़ाइन नहीं किया गया था। –
मुझे यकीन है कि यह नहीं था, लेकिन मैं सिर्फ उत्सुक हूं कि उन्होंने निर्दिष्ट कुंजी की अनुपस्थिति में समान व्यवहार करने के लिए इसे डिज़ाइन न करने का निर्णय क्यों लिया। – Dave
मुझे लगता है कि आपने कुछ निर्देशों को गलत स्थान दिया है जो कि सेटटर के अंदर गेटटर पर होना चाहिए। –