Na pewno w twoim przypadku preferowany jest słownik. Nie można modyfikować klasy Wartość KeyValue<string,int>
, ponieważ jest niezmienna.
Ale nawet jeśli nadal chcesz używać List<KeyValuePair<string, int>>();
. Możesz użyć IEqualityComparer<KeyValuePair<string, int>>
. Kod będzie podobny.
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();
}
}
i używać go w Zawiera jak
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
}
który nie brzmi dobry sposób.
nadzieję, że ta informacja pomoże ..
Dlaczego więc nie używasz 'Słownika'? – leppie
Pamiętaj, że 'KeyValuePair' jest niezmienne. Musisz usunąć istniejący wpis i utworzyć nowy za każdym razem, gdy chcesz zaktualizować wartość. Dlatego "słownik" jest znacznie lepszy niż podano w odpowiedziach. –
mellamokb
Dzięki, idę ze Słownikiem. – Olivarsham