我有一个类,如下所示,它用作Dictionary<ValuesAandB, string>中的键
尝试在此词典中查找任何键时遇到问题,根本找不到它。如您所见,我已经覆盖了EqualsGetHashCode

寻找我正在使用的 key

ValuesAandB key = new ValuesAandB(A,B);
if (DictionaryName.ContainsKey(key)) {
   ...
}

还有什么我想念的吗?谁能指出我做错了什么?
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();
      }
   }
}

而且在有人问之前,是的,这些值在词典中!

最佳答案

您如何构建字典?您是否要将自定义相等比较器传递给其构造函数?

关于c# - 自定义类在词典中用作键,但未找到键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1632768/

10-11 17:24