Để chắc chắn, từ điển phù hợp hơn trong trường hợp của bạn. Bạn không thể sửa đổi Giá trị của lớp KeyValue<string,int>
vì nó là Không thể thay đổi.
Nhưng ngay cả khi bạn vẫn muốn sử dụng List<KeyValuePair<string, int>>();
. Bạn có thể sử dụng IEqualityComparer<KeyValuePair<string, int>>
. Mã sẽ như thế nào.
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();
}
}
Và sử dụng nó trong Có như
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
}
mà không nghe cách tốt.
hy vọng thông tin này sẽ giúp ..
Nguồn
2013-01-23 06:07:52
Vậy tại sao bạn không sử dụng từ điển 'Từ điển'? – leppie
Lưu ý rằng 'KeyValuePair' là không thay đổi. Bạn sẽ phải xóa mục hiện tại và tạo một mục mới mỗi lần bạn muốn cập nhật giá trị. Đó là lý do tại sao một 'Dictionary' là tốt hơn nhiều như được đưa ra trong các câu trả lời. –
mellamokb
Cảm ơn, tôi đang đi với từ điển. – Olivarsham