2012-11-19 91 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。