2012-01-14 12 views
17

मुझे सी # में एक शब्दकोश की प्रतिलिपि बनाने की आवश्यकता है।सी # Shallow कॉपी शब्दकोश?

उदाहरण के लिए

:

Dictionary<int,int> flags = new Dictionary<int,int>(); 
flags[1] = 2; 
flags[2] = 3; 
flags[0] = 9001; 
Dictionary<int,int> flagsn = flags.MemberwiseClone(); 

दुर्भाग्य से, कि त्रुटि देता है: "त्रुटि CS1540: संरक्षित सदस्य object.MemberwiseClone()' via a qualifier of type System.Collections.Generic.Dictionary तक नहीं पहुंच सकता। क्वालीफायर प्रकार का होना चाहिए` PointFlagger 'या व्युत्पन्न इससे "

पूरी तरह से यह सुनिश्चित नहीं है कि इसका क्या अर्थ है ... क्या कोई शब्दकोष कॉपी करने का एक और तरीका है ऊपर दिए गए कोड को ठीक करें?

उत्तर

35

एक उथली प्रति प्राप्त करने के लिए, Dictionary<TKey, TValue> के निर्माता का उपयोग करें क्योंकि यह IEnumerable<KeyValuePair<TKey, TValue>> लेता है। यह इस संग्रह को नए उदाहरण में जोड़ देगा।

Dictionary<int, int> flagsn = new Dictionary<int, int>(flags); 
+0

Duuurr! मुझे शायद दस्तावेज़ीकरण के करीब देखना चाहिए था ... धन्यवाद, बहुत धन्यवाद, जेरेड! जब संभव हो तो मैं आपका जवाब स्वीकार करूंगा। –

+0

उत्तर स्वीकृति में देरी के लिए खेद है, यह सुनिश्चित नहीं है कि –

+2

@Georges कोई समस्या नहीं है। – JaredPar

6

यह एक सामान्य तरीके से मैंने पाया जहां आप स्पष्ट रूप से किसी भी प्रकार की है, जो मैं रख-रखाव कारणों के लिए पसंद करते हैं लिखने के लिए नहीं है:

var ShallowCopy = OriginalDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); 
+0

" kvp => kvp.Key, kvp => क्या है kvp.Value "इस संदर्भ में। मैं कुंजी और मूल्य कैसे जोड़ूं। यह मेरे अंत – Pratik

+0

पर एक त्रुटि दिखा रहा है आपको ToDictionary() एक्सटेंशन विधि तक पहुंचने के लिए 'System.Linq' के लिए एक उपयोग कथन जोड़ने की आवश्यकता है। –

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