KeyValuePair VS DictionaryEntry


116

KeyValuePair जो जेनेरिक संस्करण और DictionaryEntry है के बीच अंतर क्या है?

जेनेरिक डिक्शनरी क्लास में DictionaryEntry के बजाय KeyValuePair का उपयोग क्यों किया जाता है?

जवाबों:


108

KeyValuePair<TKey,TValue>के स्थान पर उपयोग किया जाता है DictionaryEntryक्योंकि यह उत्पन्न होता है। एक का उपयोग करने का लाभ यह KeyValuePair<TKey,TValue>है कि हम संकलक को हमारे शब्दकोश में क्या है के बारे में अधिक जानकारी दे सकते हैं। क्रिस के उदाहरण पर विस्तार करने के लिए (जिसमें हमारे पास दो शब्दकोश युक्त <string, int>जोड़े हैं)।

Dictionary<string, int> dict = new Dictionary<string, int>();
foreach (KeyValuePair<string, int> item in dict) {
  int i = item.Value;
}

Hashtable hashtable = new Hashtable();
foreach (DictionaryEntry item in hashtable) {
  // Cast required because compiler doesn't know it's a <string, int> pair.
  int i = (int) item.Value;
}

4
निश्चित रूप से यह सामान्यीकृत है?
danielcooperxyz

26
निश्चित रूप से यह जेनेरिक (लाइमाइफाइड), या जेनेरिकाइज्ड (यान्कीफाइड)
जेंसन-बटन-ईवेंट

7
आपके द्वारा खोजा जा रहा शब्द सामान्यीकृत है । ;)
जेसन

5
अधिक में के रूप में "generified" सामान्य नहीं सामान्य
TheGeekZn

2
क्या मैं केवल वही हूँ जो उदार कहेगा?
मौरो सेम्पीटरो

51

KeyValuePair <T, T> शब्दकोश <T, T> के माध्यम से पुनरावृति के लिए है। यह .Net 2 (और आगे) चीजों को करने का तरीका है।

DictionaryEntry हैशटेबल्स के माध्यम से पुनरावृत्ति के लिए है। यह .Net 1 काम करने का तरीका है।

यहाँ एक उदाहरण है:

Dictionary<string, int> MyDictionary = new Dictionary<string, int>();
foreach (KeyValuePair<string, int> item in MyDictionary)
{
  // ...
}

Hashtable MyHashtable = new Hashtable();
foreach (DictionaryEntry item in MyHashtable)
{
  // ...
}

4
KeyValuePair जेनरिक है, दूसरा प्री-जेनरिक है। पूर्व का उपयोग करने की सिफारिश की जा रही है fwd।
गिषु

1
मुझे लगता है कि वह समझता है कि एक जेनेरिक के लिए है, और एक गैर-जेनेरिक के लिए है। मुझे लगता है कि उनका सवाल है कि हमें दोनों की आवश्यकता क्यों है?
cdmckay

3
यदि वह यही पूछ रहा है, तो ठीक है, हमें वास्तव में दोनों की आवश्यकता नहीं है - इसके सिर्फ यही जेनेटिक्स उपलब्ध नहीं हैं। कुछ लोग अभी भी गैर-सामान्य सामान का उपयोग करना पसंद कर सकते हैं, लेकिन इसकी अत्यधिक अनुशंसा नहीं की जाती है।
क्रिस

इस जवाब ने मेरे लिए और अधिक मायने रखा।
मेरिन नाकामरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.