Подтвердить что ты не робот

Как изменить значение KeyValuePair?

У меня возникла проблема, когда я пытаюсь изменить значение элемента, потому что это только поле только для чтения.

KeyValuePair<Tkey, Tvalue>

Я пробовал разные варианты:

Dictionary<Tkey, Tvalue>

но там у меня такая же проблема. Есть ли способ установить значение в новое значение?

4b9b3361

Ответ 1

Вы не можете его изменить, вы можете заменить его на новый.

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

или для словаря:

dictionary[oldEntry.Key] = newValue;

Ответ 2

KeyValuePair<TKey, TValue> является неизменным. Вам нужно создать новый с измененным ключом или значением. То, что вы на самом деле делаете дальше, зависит от вашего сценария и того, что именно вы хотите сделать...

Ответ 3

Слушайте, если вы хотите, чтобы KeyValuePair выполнял mutable.

Создайте собственный класс.

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.