다른 개체에서 가져온 해시 코드는 x86 또는 x64 용으로 제작할 때와 다릅니다. 지금까지 내가 이렇게 내 자신의 해시 대부분의 기능을 구현 한 최대 :저는 x86이나 64 용으로 빌드 할 때 객체에 따라 다른 해시 코드를 얻는 것으로 나타났습니다.
int someIntValueA;
int someIntValueB;
const int SHORT_MASK = 0xFFFF;
public override int GetHashCode()
{
return (someIntValueA & SHORT_MASK) + ((someIntValueB & SHORT_MASK) << 16);
}
윌, 긴의 값을 저장하고 그의 해시 코드는 64 비트 시스템에서뿐만 아니라 나에게 더 넓은 범위를 제공 얻거나 이게 나쁜 생각이야?
public override int GetHashCode()
{
long maybeBiggerSpectrumPossible = someIntValueA + (someIntValueB << 32);
return maybeBiggerSpectrumPossible.GetHashCode();
}
'int'를 반환하기 때문에 더 넓은 범위를 제공하지 않습니다. – Ryan
@ Ryan 그게 내가 묻고있는 것입니다 : int는 언제나 그리고 언제나 int입니다 .32 또는 일부 상황에서 int64/long이됩니까? – user3488765
당신이 물어 본 질문이 아닙니다. 이 질문에 대한 대답은 다음과 같습니다. C# int는 Int32의 동의어이며 스토리의 끝입니다. 포인터 크기의 정수는'IntPtr'이며, C#에서 수학 연산을 수행 할 수 없습니다. –