Re[4]: Произвольная индексация в массивах
От: Pavel M. Россия  
Дата: 12.02.07 07:48
Оценка:
Здравствуйте, Amidlokos, Вы писали:

A>Здравствуйте, Norex, Вы писали:


N>>Hashtable.


A>Сам написал про хэш и при том сам за слово "хэш" влепил минус


A>Говорю же — не силён в .NET-е, но что хэш будет — однозначно. Так может человека слово "хэш" на мысль натолкнёт. Ну хорошо, в следующий раз буду молчать


что хеш (в терминах объектов и .НЕТ) — значение, зависящее от состояния объекта и подчиняющееся некоторым правилам (точно не помню, но что-то вроде, что всегда должен меняться при изменении состояния, напрямую зависить от состояния, два объекта с одинаковым состоянием должны возвращать один хеш).

рефлектор говорит для Int32,например


public override int GetHashCode()
{
      return this;
}


для String


[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
public override unsafe int GetHashCode()
{
      fixed (char* text1 = ((char*) this))
      {
            char* chPtr1 = text1;
            int num1 = 0x15051505;
            int num2 = num1;
            int* numPtr1 = (int*) chPtr1;
            for (int num3 = this.Length; num3 > 0; num3 -= 4)
            {
                  num1 = (((num1 << 5) + num1) + (num1 >> 0x1b)) ^ numPtr1[0];
                  if (num3 <= 2)
                  {
                        break;
                  }
                  num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr1[1];
                  numPtr1 += 2;
            }
            return (num1 + (num2 * 0x5d588b65));
      }
}


--------------------------
less think — do more
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.