Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SimpleClass1
- {
- public int a;
- public int b;
- public SimpleClass1(int a, int b)
- {
- this.a = a;
- this.b = b;
- }
- public int GetHashCode()
- {
- return this.a ^ this.b;
- }
- }
- class SimpleClass2
- {
- public int a;
- public int b;
- public SimpleClass2(int a, int b)
- {
- this.a = a;
- this.b = b;
- }
- public int GetHashCode()
- {
- return ShiftAndWrap(this.a, 2) ^ this.b;
- }
- }
- class Project
- {
- static void Main()
- {
- // создаем 2 класса с указанием значений полей
- // в одном классе поля равны: a = 1; b = 3
- // во втором классе поля равны: a = 3; b = 1
- // получается поля НЕ РАВНЫ ПО ЗНАЧЕНИЯМ ПОЛЕЙ
- // но при этом их хеши РАВНЫ, что является неверным
- SimpleClass1 c1(1, 3);
- SimpleClass1 c2(3, 1);
- Console.WriteLine(c1.GetHashCode() == c2.GetHashCode()); // Output: True --- thats wrong answer
- // здесь у нас похожая ситуация, но при вычитании хешей мы сдвигаем поля
- // таким образом получается, что хеши НЕ РАВНЫ, что уже верно
- SimpleClass2 c3(2, 5);
- SimpleClass2 c4(5, 2);
- Console.WriteLine(c3.GetHashCode() == c4.GetHashCode()); // Output: False --- thats correct answer
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement