Внутренний хэш-код словаря

При добавлении объектов в Dictionary<object,T>, как Dictionary узнает, был ли объект добавлен ранее?

  • Если ответ object.GetHashCode(), то почему сказано, что мы не должны доверять object.GetHashCode() для наших собственных алгоритмов, в то время как мы все еще можем использовать Dictionary.Add(obj,t) и ожидать исключения, если obj был добавлен раньше?
  • В противном случае, могу ли я получить его внутренний (хэш?) код?

Под объектом я подразумеваю только примитивные массивы.

Может быть, даже проще, можем ли мы доверять

Dictionary<object,T> d=new Dictionary<object,T>();

что он не будет принимать один и тот же массив дважды или всегда может иметь два разных массива?

Еще проще: считается ли object.GetHashCode() константой на протяжении всего времени жизни массива?

Меня не волнует поэлементное равенство.

Я спрашиваю об этом, потому что я работаю над алгоритмом передачи сетевого массива с использованием сокетов tcp, и сервер должен знать, был ли он отправлен его клиентом раньше. Потому что я создаю 1 уникальный буфер для каждого уникального массива, полученного от клиента.


person huseyin tugrul buyukisik    schedule 20.10.2016    source источник
comment
Он использует комбинацию object.GetHashCode() и object.Equals(). Я не знаю, где вы видели, что вы не должны доверять object.GetHashCode() в своих собственных алгоритмах. Это утверждение не имеет для меня никакого смысла.   -  person itsme86    schedule 21.10.2016
comment
Итак, в словаре он не меняет хэш-код. Спасибо.   -  person huseyin tugrul buyukisik    schedule 21.10.2016