Tôi có một lớp, hiển thị bên dưới, được sử dụng làm khóa trong Dictionary<ValuesAandB, string>
Tôi đang gặp sự cố khi tìm bất kỳ khóa nào trong từ điển này nó ở tất cả. Như bạn thấy, tôi đã ghi đè Equals
và GetHashCode
.Lớp tùy chỉnh được sử dụng làm khóa trong Từ điển nhưng khóa không tìm thấy
Để tìm kiếm chìa khóa Tôi đang sử dụng
ValuesAandB key = new ValuesAandB(A,B);
if (DictionaryName.ContainsKey(key)) {
...
}
Có điều gì khác mà tôi đang thiếu? Bất cứ ai có thể chỉ ra những gì tôi đang làm sai?
private class ValuesAandB {
public string valueA;
public string valueB;
// Constructor
public ValuesAandB (string valueAIn, string valueBIn) {
valueA = valueAIn;
valueB = ValueBIn;
}
public class EqualityComparer : IEqualityComparer<ValuesAandB> {
public bool Equals(ValuesAandB x, ValuesAandB y) {
return ((x.valueA.Equals(y.valueA)) && (x.valueB.Equals(y.valueB)));
}
public int GetHashCode(ValuesAandB x) {
return x.valueA.GetHashCode()^x.valueB.GetHashCode();
}
}
}
Và trước khi có ai hỏi, có giá trị trong Từ điển!
Có, nhận xét được đưa lên máy bay và câu trả lời chính xác khi nó bật ra, nhưng Greg Beech đã đi trước bạn sợ. Cảm ơn bạn đã giúp đỡ. –