След изпълнение на тази част от кода:
int a = 50;
float b = 50.0f;
Console.WriteLine(a.GetHashCode() == b.GetHashCode());
Получаваме False
, което се очаква, тъй като имаме работа с различни обекти, следователно трябва да получим различни хешове.
Ако обаче изпълним това:
int a = 0;
float b = 0.0f;
Console.WriteLine(a.GetHashCode() == b.GetHashCode());
Получаваме True
. И двата обекта връщат един и същ хеш код: 0
.
Защо това се случва? Не трябва ли да връщат различни хешове?
a.Equals(b)
, получавамеFalse
, дори ако хешовете им са еднакви - person Matias Cicero   schedule 28.10.2014