GetHashCode
функция выдает хэш со знаком int32 объекта.
Из MSDN.
Два равных объекта возвращают одинаковые хэш-коды.Однако обратное неверно: одинаковые хеш-коды не подразумевают равенства объектов, поскольку разные (неравные) объекты могут иметь одинаковые хеш-коды.
GetHashCode
- это виртуальная функция и может быть переопределена.То, что вы получаете после вызова JsonConvert.SerializeObject
, выполняет функцию строки.Класс string
имеет собственную реализацию GetHashCode
, основанную на содержимом строки.Что-то вроде ниже.Вот почему это соответствует.
public class string {
char[] str = null;
...
public string(char[] input) {
this.str = input;
}
public override GetHashCode() {
//Logic to convert str to int 32 based on string contents;
return Convert.ToInt32(str);
}
}