Здравствуйте, 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));
}
}