2012-11-19 18 views
40

項目の値を変更しようとすると問題が発生します。読み取り専用フィールドしかないためです。KeyValuePairの値を変更するにはどうすればよいですか?

KeyValuePair<Tkey, Tvalue> 

私のような別の選択肢試してみた:

Dictionary<Tkey, Tvalue> 

をしかしそこに、私は同じ問題を抱えています。値フィールドを新しい値に設定する方法はありますか?

+0

特定の値、または辞書の値のすべて/ほとんどを更新しようとしていますか? – J0HN

+0

特定の値を更新しようとしています。 – Kimbo

答えて

73

あなたはそれを変更することはできません。新しいもので置き換えることができます。

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

や辞書のために:あなたはKeyValuePairを可変させるようにしたい場合は

dictionary[oldEntry.Key] = newValue; 
+0

ご協力ありがとうございます。辞書の部分はまさに私が必要なものです。 – Kimbo

8

KeyValuePair<TKey, TValue>は不変です。変更されたキーまたは値を使用して新しいものを作成する必要があります。あなたが実際に次に行うことは、あなたのシナリオに依存し、正確に何をしたいかによって決まります。

6

を聞きます。

カスタムクラスを作成します。

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のどこでも使用できます。

関連する問題