string s1 = "t";
string s2 = 't'.ToString();
Console.WriteLine(s1.Equals(s2)); // returning true
Console.WriteLine(object.Equals(s1, s2)); // returning true
Đây là kết quả tương tự. Bây giờ khi tôi đang sử dụng StringBuilder nó không trả về cùng một giá trị. Lý do bên dưới là gì?Tại sao object.Equals và instanceobject.Equals không giống nhau
StringBuilder s1 = new StringBuilder();
StringBuilder s2 = new StringBuilder();
Console.WriteLine(s1.Equals(s2)); // returning true
Console.WriteLine(object.Equals(s1, s2)); // returning false
Edit1: Câu hỏi trên của tôi được trả lời bên dưới. Nhưng trong cuộc thảo luận này những gì chúng ta tìm ra StringBuilder không có bất kỳ phương thức override Equals nào trong việc thực thi nó. Vì vậy, khi chúng ta gọi StringBuilder.Equals nó thực sự đi đến Object.Equals. Vì vậy, nếu ai đó gọi StringBuilder.Equals và S1.Equals (S2) thì kết quả sẽ khác.
Tốt bắt! Tóm lại, 'StringBuilder' dường như quên ghi đè' Equals (object) '. Có vẻ như ngược trực giác để có 'Equals (StringBuilder)' có hành vi khác nhau từ 'Equals (object)'. – leppie