Sicher ist Wörterbuch in Ihrem Fall vorzuziehen. Sie können den Wert von KeyValue<string,int>
Klasse nicht ändern, wie es unveränderlich ist.
Aber auch wenn Sie immer noch List<KeyValuePair<string, int>>();
verwenden möchten. Sie können IEqualityComparer<KeyValuePair<string, int>>
verwenden. Code wird wie sein.
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();
}
}
und verwenden Sie es in Enthält wie
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
}
, die nicht gute Weise nicht klingt.
hoffe diese info hilft ..
Also warum benutzen Sie nicht ein 'Dictionary' dann? – leppie
Beachten Sie, dass 'KeyValuePair' unveränderlich ist. Sie müssten den vorhandenen Eintrag entfernen und jedes Mal einen neuen erstellen, wenn Sie den Wert aktualisieren möchten. Deshalb ist ein 'Wörterbuch' viel besser als in den Antworten angegeben. –
mellamokb
Danke, ich gehe mit Wörterbuch. – Olivarsham