当然,在您的情况下,字典更可取。您不能修改 KeyValue<string,int> 类的值,因为它是不可变的。
但即使你仍然想使用List<KeyValuePair<string, int>>();。您可以使用IEqualityComparer<KeyValuePair<string, int>>。代码会是这样的。
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();
}
}
并在 Contains like 中使用它
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
}
这听起来不太好。
希望这些信息对您有所帮助..