При добавлении объектов в 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 уникальный буфер для каждого уникального массива, полученного от клиента.
object.GetHashCode()
иobject.Equals()
. Я не знаю, где вы видели, что вы не должны доверятьobject.GetHashCode()
в своих собственных алгоритмах. Это утверждение не имеет для меня никакого смысла. - person itsme86   schedule 21.10.2016