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