Sử dụng Reflector hoặc DotPeek, việc thực hiện System.Linq.Data.Binary của sự quá tải toán tử bằng trông như thế này:Tham khảo điều hành bình đẳng trong thực hiện điều hành bình đẳng
[Serializable, DataContract]
public sealed class Binary : IEquatable<Binary>
{
...
public static bool operator ==(Binary binary1, Binary binary2)
{
return ((binary1 == binary2) || (((binary1 == null) && (binary2 == null)) || (((binary1 != null) && (binary2 != null)) && binary1.EqualsTo(binary2))));
}
tôi phải mất một cái gì đó rõ ràng, hoặc có một cơ chế diễn ra mà tôi không biết (chẳng hạn như ngầm gọi đối tượng == trong cơ thể?). Tôi thừa nhận, tôi hiếm khi cần phải quá tải các nhà khai thác tiêu chuẩn.
Tại sao việc triển khai này không dẫn đến việc đệ quy vô hạn (một thử nghiệm đơn giản cho thấy nó không recurse vô hạn)? Biểu thức điều kiện đầu tiên là binary1 == binary2, bên trong việc thực hiện quá tải của toán tử sẽ được gọi nếu bạn sử dụng binary1 == binary2 bên ngoài việc thực hiện, và tôi cũng nghĩ rằng, bên trong là tốt.
Xin lỗi, tôi có nghĩa là để nói Reflector, không Resharper trong bài viết của tôi (mà tôi đã sửa). Thú vị là Resharper hiện tại đã làm đúng, nhưng DotPeek (bởi cùng một công ty) thì không. – hatchet