2012-11-19 22 views
40

Ho un problema quando provo a modificare il valore di un oggetto perché è solo un campo di sola lettura.Come modificare un valore KeyValuePair?

KeyValuePair<Tkey, Tvalue> 

Ho provato diverse alternative, come:

Dictionary<Tkey, Tvalue> 

ma non ho lo stesso problema. C'è un modo per impostare il campo del valore su un nuovo valore?

+0

Si sta tentando di aggiornare un valore specifico o tutti/molti dei valori nel dizionario? – J0HN

+0

Provo ad aggiornare un valore specifico. – Kimbo

risposta

73

Non puoi modificarlo, puoi sostituirlo con uno nuovo.

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

o dizionario:

dictionary[oldEntry.Key] = newValue; 
+0

Grazie per il vostro aiuto. La parte con il dizionario è esattamente ciò di cui ho bisogno. – Kimbo

8

KeyValuePair<TKey, TValue> è immutabile. È necessario crearne uno nuovo con la chiave o il valore modificati. Quello che fai dopo dipende dal tuo scenario e cosa esattamente vuoi fare ...

6

sentire se si vuole fare KeyValuePair rendere mutevole.

Fai una lezione personalizzata.

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; 
    } 
} 

così da poterlo utilizzare ovunque in KeyValuePair.

Problemi correlati