01/10/2018, 17:27

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.

Trương Tấn Phát viết 19:38 ngày 01/10/2018

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
Đơ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);
}
Trần Hoàn viết 19:36 ngày 01/10/2018

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

rogp10 viết 19:41 ngày 01/10/2018

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

Trương Tấn Phát viết 19:42 ngày 01/10/2018

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.

Bài liên quan
0