当我尝试修改项目的值时,我遇到了一个问题,因为它只是一个只读字段。
KeyValuePair<Tkey, Tvalue>
我尝试了不同的替代品,如:
Dictionary<Tkey, Tvalue>
但我有同样的问题。有没有办法将值字段设置为新值?
您无法修改它,您可以用新的替换它。
var newEntry = new KeyValuePair<Tkey, Tvalue>(oldEntry.Key, newValue);
或者字典:
dictionary[oldEntry.Key] = newValue;
KeyValuePair<TKey, TValue>
是不变的。您需要使用修改后的键或值创建一个新的。你下一步做什么取决于你的场景,你究竟想做什么......
在这里,如果你想让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的任何地方使用它。
您无法修改KeyValuePair,但您可以像这样修改字典值:
foreach (KeyValuePair<String, int> entry in dict.ToList())
{
dict[entry.Key] = entry.Value + 1;
}
或者像这样:
foreach (String entry in dict.Keys.ToList())
{
dict[entry] = dict[entry] + 1;
};