Tôi đã triển khai một lớp quá tải các toán tử ==
và !=
.Ghi đè Nhà điều hành Bình đẳng
Điều này có vẻ hoạt động tốt; tuy nhiên, tôi nhận được cảnh báo 'type' defines operator == or operator != but does not override Object.Equals(object o)
.
OK, vì vậy, tôi đã thực hiện Bằng. Nhưng bây giờ tôi nhận được cảnh báo 'type' defines operator == or operator != but does not override Object.GetHashCode()
.
Điều này có kết thúc tại một thời điểm nào đó không? Hay tôi đã lang thang vào một yêu cầu không bao giờ kết thúc chỉ vì tôi muốn quá tải ==
và !=
?
Chỉnh sửa thuật ngữ nhanh: bạn không * ghi đè * toán tử - bạn * quá tải * chúng. –
Khi bạn ghi đè 'Equals', bạn cũng cần ghi đè' GetHashCode', vì nó sẽ kiểm tra sự bình đẳng dựa trên hàm băm. –
@IgorisAzanovas No, Equals sẽ không kiểm tra sự bình đẳng dựa trên hàm băm (trừ khi bạn quá tải và mã hóa nó theo cách đó). Hàm băm có sẵn để hỗ trợ các bộ sưu tập được băm và không được dự kiến tạo ra một giá trị duy nhất, chỉ có một giá trị lý tưởng sẽ được sử dụng không thường xuyên. – Suncat2000