2011-06-15 7 views
7

मैंने यह जानने का प्रयास करने में कुछ घंटे बिताए हैं कि मेरा जेनेरिक डिक्शनरी (स्ट्रिंग, स्ट्रिंग) केस को अनदेखा क्यों नहीं कर रहा है।केस असंवेदनशील शब्दकोश काम नहीं कर रहा

Dim test As New System.Collections.Generic.Dictionary(Of String, String)(System.StringComparison.OrdinalIgnoreCase) 
test.Add("FROG", "1") 
Console.WriteLine(test.ContainsKey("frog")) 

कंसोल "गलत" हर बार दिखाता है:

यहाँ मेरी कोड है। यह "सच" दिखाना चाहिए।

अगर मैं का उपयोग करें:

Console.WriteLine(test."frog")) 

मैं एक KeyNotFoundException मिलता है।

ऐसा लगता है जैसे तुलनात्मक पैरामीटर पूरी तरह से अनदेखा किया जा रहा है।

क्या चल रहा है?

उत्तर

14

संकेत here के रूप में, यह एक साधारण वर्तनी गलती है।

समस्या सिस्टम है। स्ट्रिंग कॉम्पर्सन .ऑर्डिनल इग्नोरकेस एक इंटीजर एनम है।
यह सिस्टम होना चाहिए। StringComparer .OrdinalIgnoreCase

न्यू System.Collections.Generic.Dictionary (System.StringComparison.OrdinalIgnoreCase) (स्ट्रिंग, स्ट्रिंग की) वास्तव में नई (क्षमता पूर्णांक के रूप में) बुला रहा है अतिभारित निर्माता, और गुजर 5 ।

इसलिए, यह उम्मीद के रूप में सभी काम करने के लिए, इन्स्टेन्शियशन लाइन पढ़ना चाहिए:

Dim test As New System.Collections.Generic.Dictionary(Of String, String)(System.StringComparer.OrdinalIgnoreCase) 
+1

वाह अच्छा आंख और अब मुझे याद है कि मैं क्यों अंतर्निहित रूपांतरण बर्दाश्त नहीं कर सकता। – Josh

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^