2012-11-19 13 views
40

मुझे एक समस्या मिली जब मैं किसी आइटम के मान को संशोधित करने का प्रयास करता हूं क्योंकि यह केवल पढ़ने वाला फ़ील्ड है।KeyValuePair मान को कैसे संशोधित करें?

KeyValuePair<Tkey, Tvalue> 

मैं की तरह अलग अलग विकल्प की कोशिश की है:

Dictionary<Tkey, Tvalue> 

लेकिन वहाँ मैं एक ही समस्या है। क्या मूल्य फ़ील्ड को नए मान पर सेट करने का कोई तरीका है?

+0

क्या आप एक विशिष्ट मूल्य, या सभी/अधिकांश मूल्यों को अद्यतन करने की कोशिश कर रहे हैं? – J0HN

+0

मैं एक विशिष्ट मान को अपडेट करने का प्रयास करता हूं। – Kimbo

उत्तर

73

आप इसे संशोधित नहीं कर सकते हैं, आप इसे एक नए से बदल सकते हैं।

var newEntry = new KeyValuePair<Tkey, Tvalue>(oldEntry.Key, newValue); 

या शब्दकोश के लिए:

dictionary[oldEntry.Key] = newValue; 
+0

आपकी मदद के लिए धन्यवाद। शब्दकोश के साथ हिस्सा बिल्कुल वही है जो मुझे चाहिए। – Kimbo

8

KeyValuePair<TKey, TValue> अपरिवर्तनीय है। आपको संशोधित कुंजी या मान के साथ एक नया निर्माण करने की आवश्यकता है। आप वास्तव में जो करते हैं वह आपके परिदृश्य पर निर्भर करता है, और आप वास्तव में क्या करना चाहते हैं ...

6

हियर आप KeyValuePair परिवर्तनशील बनाने करना चाहते हैं।

एक कस्टम क्लास बनाएं।

public class KeyVal<Key, Val> 
{ 
    public Key Id { get; set; } 
    public Val Text { get; set; } 

    public KeyVal() { } 

    public KeyVal(Key key, Val val) 
    { 
     this.Id = key; 
     this.Text = val; 
    } 
} 

ताकि हम इसे KeyValuePair में कहीं भी उपयोग कर सकें।

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