Ответ 1
Вы не можете его изменить, вы можете заменить его на новый.
var newEntry = new KeyValuePair<Tkey, Tvalue>(oldEntry.Key, newValue);
или для словаря:
dictionary[oldEntry.Key] = newValue;
У меня возникла проблема, когда я пытаюсь изменить значение элемента, потому что это только поле только для чтения.
KeyValuePair<Tkey, Tvalue>
Я пробовал разные варианты:
Dictionary<Tkey, Tvalue>
но там у меня такая же проблема. Есть ли способ установить значение в новое значение?
Вы не можете его изменить, вы можете заменить его на новый.
var newEntry = new KeyValuePair<Tkey, Tvalue>(oldEntry.Key, newValue);
или для словаря:
dictionary[oldEntry.Key] = newValue;
KeyValuePair<TKey, TValue>
является неизменным. Вам нужно создать новый с измененным ключом или значением. То, что вы на самом деле делаете дальше, зависит от вашего сценария и того, что именно вы хотите сделать...
Слушайте, если вы хотите, чтобы 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.