public void GetHashCode() { OverrideGHC a = new OverrideGHC(33, true); OverrideGHC b = new OverrideGHC(178, false); Console.WriteLine(a.GetHashCode()); Console.WriteLine(b.GetHashCode()); }
public override bool Equals(object obj) { OverrideGHC o = (OverrideGHC)obj; if (a == o.a && b == o.b) { return(true); } return(false); }
public void EqualsAndHashCode() { OverrideGHC a1 = new OverrideGHC(1, true); OverrideGHC a2 = new OverrideGHC(1, true); NotOverrideGHC b1 = new NotOverrideGHC(1, true); NotOverrideGHC b2 = new NotOverrideGHC(1, true); //if objects == than their hash codes match A.IsTrue(a1.Equals(a2)); A.AreEqual(a1.GetHashCode(), a2.GetHashCode()); //default implementation do not satisfies rule above A.IsTrue(b1.Equals(b2)); A.AreNotEqual(b1.GetHashCode(), b2.GetHashCode()); }
public void OverrideGHCInCollection() { String va, vb; var a = new OverrideGHC(1, true); var b = new OverrideGHC(1, true); var d = new Dictionary <OverrideGHC, String>(); d.Add(a, "a1 value"); d.TryGetValue(a, out va); d.TryGetValue(b, out vb); //with overrided hash code if objects are equal (even if it is different instances) corretly find them in hash table A.AreEqual(a, b); A.AreEqual("a1 value", va); A.AreEqual("a1 value", vb); }