Di sicuro, il dizionario è preferibile nel tuo caso. Non è possibile modificare il valore della classe KeyValue<string,int>
in quanto è immutabile.
Ma anche se si desidera utilizzare ancora List<KeyValuePair<string, int>>();
. È possibile utilizzare IEqualityComparer<KeyValuePair<string, int>>
. Il codice sarà come
public class KeyComparer : IEqualityComparer<KeyValuePair<string, int>>
{
public bool Equals(KeyValuePair<string, int> x, KeyValuePair<string, int> y)
{
return x.Key.Equals(y.Key);
}
public int GetHashCode(KeyValuePair<string, int> obj)
{
return obj.Key.GetHashCode();
}
}
e utilizzarlo in Contiene come
var list = new List<KeyValuePair<string, int>>();
string checkKey = "my string";
if (list.Contains(new KeyValuePair<string, int>(checkKey, int.MinValue), new KeyComparer()))
{
KeyValuePair<string, int> item = list.Find((lItem) => lItem.Key.Equals(checkKey));
list.Remove(item);
list.Add(new KeyValuePair<string, int>("checkKey", int.MinValue));// add new value
}
che non suona bene così.
sperare che questa informazione sia d'aiuto ..
fonte
2013-01-23 06:07:52
Allora perché non usi un dizionario? – leppie
Si noti che 'KeyValuePair' è immutabile. Dovresti rimuovere la voce esistente e crearne una nuova ogni volta che desideri aggiornare il valore. Ecco perché un 'dizionario' è molto meglio dato nelle risposte. –
mellamokb
Grazie, vado con il dizionario. – Olivarsham