Tôi cần kiểm tra xem hai đối tượng cùng loại có cùng các phiên bản và trỏ đến cùng một cấp bộ nhớ hay không. Vấn đề là loại có quá tải toán tử bình đẳng và do đó nó sẽ sử dụng nó như so sánh cả hai cho bình đẳng, nhưng tôi cần phải kiểm tra chúng để tham khảo. Tôi nhìn qua object.ReferenceEquals()
phương pháp, nhưng nó trong nội bộ áp dụng điều hành bình đẳngSo sánh hai đối tượng bằng tham chiếu khi toán tử bằng nhau được ghi đè
7
A
Trả lời
7
Các nhà khai thác có thể không được ghi đè - họ chỉ có thể là quá tải.
Vì vậy, các nhà điều hành trong ==
object.ReferenceEquals
vẫn so sánh tài liệu tham khảo, hoặc bạn có thể làm điều tương tự cho mình bằng cách đúc một hoặc cả hai toán hạng:
string x = "some value";
string y = new string(x.ToCharArray());
Console.WriteLine(x == y); // True
Console.WriteLine((object) x == (object) y); // False
Console.WriteLine(ReferenceEquals(x, y)); // False
5
ReferenceEquals
không chính xác những gì bạn cần, trừ khi bạn nói về một từ điển . Nó không kiểm tra Equals
(theo nghĩa đen chỉ là ldarg.0
, ldarg.1
, ceq
, ret
). Ngoài ra, chỉ cần đúc để phản đối:
bool same = (object)x == (object)y;
Nếu bạn cần sự hỗ trợ từ điển (như vậy: GetHashCode
): System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(obj)
là bạn của bạn.
Các vấn đề liên quan
- 1. Liệu một đối tượng Python không ghi đè các toán tử so sánh bằng chính nó?
- 2. So sánh hai đối tượng để xem liệu có bằng
- 3. So sánh hai đối tượng.
- 4. Toán tử ghi đè == trong Ruby
- 5. Ghi đè phương thức bằng so với phương pháp mới
- 6. So sánh hai đối tượng
- 7. So sánh các tham chiếu đối tượng JNI
- 8. java so sánh hai đối tượng Mẫu
- 9. So sánh hai số nguyên sử dụng toán tử bit
- 10. Hai tham chiếu đối tượng trỏ đến nhau
- 11. jQuery so sánh hai đối tượng DOM?
- 12. C# Cách tìm hai đối tượng bằng
- 13. So sánh hai đối tượng NSNumber
- 14. Cách đối chiếu SQL_Latin1_General_CP1_CI_AS bằng toán tử IN
- 15. So sánh hai số xấp xỉ bằng
- 16. PHP - so sánh cấu trúc của hai đối tượng JSON
- 17. Sự khác biệt giữa bằng và chính xác bằng toán tử so sánh cụm từ
- 18. Sau khi quá tải toán tử ==, cách so sánh nếu hai biến trỏ vào cùng một đối tượng?
- 19. Ghi đè đối tượng ghi đè với các liên kết
- 20. Ghi đè toán tử 'boolean' trong python?
- 21. So sánh datetimes bằng không so sánh
- 22. Ghi đè hai SpatialPolygonsDataFrames bằng spplot
- 23. Tại sao có thể so sánh hai con trỏ dường như bằng nhau với == return false?
- 24. Chuỗi so sánh: toán tử ==() vs Equals()
- 25. Thuật toán để so sánh bằng giọng nói
- 26. Cách so sánh loại đối tượng bằng Python?
- 27. Perl so sánh toán tử và "số"
- 28. So sánh hai mảng numpy với nhau
- 29. Sử dụng XPath để so sánh hai đối tượng XML để cân bằng chính xác
- 30. So sánh hai đối tượng null từ hai loại khác nhau
Không, không. Nó so sánh * tham chiếu * bằng cách sử dụng * toán tử bình đẳng * riêng của nó. Không phải những người quá tải –