2011-05-31 56 views
6

Ví dụ this, áp phích đã ghi đè phương thức mã băm nhận được. Tôi hiểu rằng điều này đã được thực hiện để cung cấp giá trị băm tốt hơn cho đối tượng được trả về, để giảm số lần va chạm, và do đó giảm số lần cần gọi Equals().C# Ghi đè phương thức GetHashCode

Những gì tôi muốn biết là làm thế nào thuật toán này được tính toán:

return 17 + 31 * CurrentState.GetHashCode() + 31 * Command.GetHashCode(); 

Có một lý do cụ thể mà các con số trong câu hỏi đã được lựa chọn? Tôi có thể chỉ đơn giản là chọn số riêng của tôi để đưa vào nó?

+1

Chỉ để biết thông tin, trình biên dịch MS C# (cho loại anon) sử dụng hạt giống '-1134271262' và hệ số là' -1521134295'. Chỉ cần nói ' –

+0

@MarcGravell: Bạn có nguồn cho điều đó không? – DeepSpace101

+0

@ DeepSpace101 ILDASM; p –

Trả lời

4

Thông thường, bạn nên chọn số nguyên tố. Điều này giúp bạn tránh được cùng một giá trị băm cho các tham số đầu vào khác nhau.

Các vấn đề liên quan