2012-05-01 49 views
5

Tôi muốn xác định tác động thay đổi mã trong khi ghi đè bằng Equals() trong lớp của tôi sẽ có trên mã.Cách bỏ qua ghi đè của phương thức khi tìm kiếm tất cả các tham chiếu

public override bool Equals(object obj) 
    { 
    // My code to be changed 
    return true; 
    } 

Khi tôi thực hiện Shift-F12 để tìm tất cả các tham chiếu, Visual Studio trả về 126,703 địa điểm nơi tôi đang gọi đối tượng.Equals().

Có cách nào để bỏ qua ghi đè của phương thức Equals() khi tìm kiếm tham chiếu không?

+0

Tôi thấy một câu hỏi tương tự tại http://stackoverflow.com/questions/7399284/c-how-to-find-references-to-equals-operator-for-a-particular-class-in-visual-s – GregC

+1

Tôi thích thủ thuật [Lỗi thời] của Mark. – GregC

+0

Tuy nhiên, "lỗi CS0809: Cảnh báo là Lỗi: Thành viên lỗi thời 'Foo.ToString()' ghi đè thành viên không tồn tại 'object.ToString()'". Và nếu "#pragma cảnh báo tắt 809" thì thuộc tính [Lỗi thời] bị bỏ qua. :-P – yoyo

Trả lời

5

Bởi vì phương pháp Equals được xác định ở mức object, một đối tượng của lớp học của bạn có thể dễ dàng được chuyển đến một phương pháp mà các cuộc gọi Equals không biết gì nhiều hơn thế nó là một object.

Ví dụ: nếu bạn đã thêm đối tượng vào HashSet hoặc nếu bạn gọi .Distinct() trên bộ sưu tập bao gồm đối tượng của bạn, thì bạn sẽ gián tiếp gọi Equals.

Cách duy nhất để tìm tất cả các địa điểm ghi đè Equals sẽ ảnh hưởng đến việc tìm tất cả các địa điểm mà lớp học của bạn đang được sử dụng và xem những gì được thực hiện với nó.

+1

Điều này giải thích nó hoàn hảo ... nhưng cậu bé tôi thất vọng. Tôi đã có rất nhiều mã để chải qua bây giờ. –

Các vấn đề liên quan