Пример #1
0
        public void ClassWithCustomEqualsHashSet()
        {
            var point1 = new EqualsMethod.CustomEquals.PointClass {
                X = 1, Y = 2
            };
            var point2 = new EqualsMethod.CustomEquals.PointClass {
                X = 1, Y = 2
            };

            // overridden Equals method returns true
            Assert.IsTrue(point1.Equals(point2));
            // default GetHashCode method returns different values
            Assert.IsFalse(point1.GetHashCode() == point2.GetHashCode());

            var set = new HashSet <EqualsMethod.CustomEquals.PointClass>();

            set.Add(point1);
            set.Add(point2);
            // HashSet adds both points because of different GetHashCode value
            Assert.IsFalse(set.Count == 1);
        }