शब्दकोश को कॉल करते समय आपको KeyNotFoundException
कैसे प्राप्त हो सकता है?ContainsKey (स्ट्रिंग कुंजी) कैसे एक शब्दकोश <string, string> पर keyNotFoundException को फेंक सकता है?
IDictionary<string, string> RequestParams { get; }
कॉल यह देखते हुए कि मैं बना रहा हूं:
यह देखते हुए कि मैं एक Dictionary<string, string>
लौट रहा हूँ के रूप में इस
विधि मैं फोन कर रहा हूँ के हस्ताक्षर को देखते हुए:
public IDictionary<string, string> RequestParams
{
get
{
NameValueCollection nvc = HttpContext.Request.Params;
#region Collect the Request Params
Dictionary<string, string> dict = new Dictionary<string, string>();
nvc.AllKeys.ForEach(s => dict[s] = nvc[s]);
#endregion
#region Collect the Route Data Present in the Url
RouteData.Values.ForEach(pair =>
{
string param = (pair.Value ?? "").ToString();
if (!String.IsNullOrEmpty(param) && Uri.AbsolutePath.Contains(param))
dict[pair.Key] = param;
});
#endregion
return dict;
}
}
और मैंने वास्तव में निरीक्षण किया है cted कि यह वास्तव में एक तत्काल और आबादी Dictionary<string, string>
वर्ग किस तरह के 'RequestParams' जब आप अपवाद है? साथ ही, आपको यह कहने के लिए अपना प्रश्न संपादित करना चाहिए "यह देखते हुए कि मैं एक आईडी आईडीआईआर <स्ट्रिंग, स्ट्रिंग>' – mason
@ मेसन वापस कर रहा हूं, मैंने विधि कार्यान्वयन जोड़ा है। प्रबंधित कोड –
'ContainsKey' अपवाद फेंक नहीं रहा है, आपकी संपत्ति गेटटर है। और यही कारण है कि आप इस तरह संपत्ति गेटर्स में आश्चर्यजनक कोड कभी नहीं डालते हैं। हर बार जब इसे बुलाया जाता है तो एक नई वस्तु का निर्माण अप्रत्याशित होता है, विशेष रूप से यदि इसे बनाना * विफल * हो सकता है - गेटर्स को अपवाद नहीं फेंकना चाहिए। –