如何修改KeyValuePair值?

问题描述 投票:58回答:4

当我尝试修改项目的值时,我遇到了一个问题,因为它只是一个只读字段。

KeyValuePair<Tkey, Tvalue>

我尝试了不同的替代品,如:

Dictionary<Tkey, Tvalue>

但我有同样的问题。有没有办法将值字段设置为新值?

c# .net
4个回答
98
投票

您无法修改它,您可以用新的替换它。

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

或者字典:

dictionary[oldEntry.Key] = newValue;

8
投票

KeyValuePair<TKey, TValue>是不变的。您需要使用修改后的键或值创建一个新的。你下一步做什么取决于你的场景,你究竟想做什么......


8
投票

在这里,如果你想让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的任何地方使用它。


0
投票

您无法修改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;
};
© www.soinside.com 2019 - 2024. All rights reserved.