에릭 Lippert의에 의해 Guidelines and rules for GetHashCode에서 인용 :데이터베이스에 안전하게 저장할 수있는 문자열에 대해 .net (C#)으로 HashCode를 만드는 방법은 무엇입니까?
규칙 : GetHashCode의 소비자는 시간이 지남에 안정되고 의지 또는에서
것은 당신이 한 무리가있는 고객 오브젝트 가 있다고 가정 응용 프로그램 도메인 수 없습니다 이름, 주소 등과 같은 필드 두 개의 서로 다른 프로세스에서 동일한 데이터를 가진 두 개의 객체를 으로 만들면 은 동일한 해시 코드를 반환 할 필요가 없습니다. 화요일에 화요일에 이러한 객체를 만들 경우, 을 종료하고 수요일에 프로그램을 다시 실행하십시오. 해시 코드는 일 수 있습니다.
이것은 과거에 사람을 물었습니다. 는 System.String.GetHashCode에 대한 문서는 두 개의 동일한 문자열이 그들이 실제로 서로 다른 해시 코드 CLR은 서로 다른 버전의 및 을 가질 수 특별히 을 말한다. 데이터베이스에 문자열 해시를 저장하지 마십시오. 문자열 해시가 데이터베이스에 저장되지 않기 때문에 영원히 같을 것으로 기대하십시오.
그래서 데이터베이스에 저장할 수있는 문자열의 HashCode를 만드는 올바른 방법은 무엇입니까?
(I 소프트웨어에서이 버그 내가 작성한을 떠난 최초의 사람이 아니라고 말해주세요!)
음, 필자는 GetHashCode에 의존하지 않는다. 나는 다른 사람들이 더 잘하지 않는다고 믿는다 ...-) –
당신이 작성한 소프트웨어에서이 버그를 떠난 사람은 당신이 처음이 아니다. – Bobby
Dbase 엔진은 이미 해싱 문자열에 매우 능숙합니다. 그냥 열의 색인을 만드십시오. –