Nạp chồng toán tử == trong C#

Chào mn, mình có viết chương trình tính phương trình bậc 2. Mình viết operator + thì chạy bình tường nhưng mình viết operator== thì nó báo lỗi như vậy. Mình có tìm hiểu qua mạng thì cách viết của mình giống với cách viết của họ. Mong mọi người chỉ ra chỗ sai của mình, mình cảm ơn.

Một khi nạp chồng toán tử == thì phải nạp chồng cả toán tử != luôn, tức là 1 thằng này không rời nhau :smiling_imp:
Đơn giản trong != trả về giá trị ngược lại của == là được.

public static bool operator ==(QuadraticEquation A, QuadraticEquation B){
    return A.Qa == B.Qa && A.Qb == B.Qb && A.Qc == B.Qc;
}
public static bool operator !=(QuadraticEquation A, QuadraticEquation B){
    return !(A == B);
}
3 Likes

Cố gắng sửa hết cả các warning nữa nếu được.

2 Likes

Đâu phải lúc nào cũng cần GetHashCode :slight_smile:

Tại nó có liên quan với nhau và chỉ CẢNH BÁO chứ chưa phải là LỖI.
Thường thì khi nạp chồng toán tử == và !=, nhiều khi bên trong nó lại gọi đến Equals mà mặc định thì trong Equals lại gọi đến GetHashCode. Để đảm bảo tính toàn vẹn và chính xác nên nó khuyến khích nạp chồng luôn EqualsGetHashCode.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?