2012-03-04 22 views
8

Tôi đã đọc số post nhưng không trả lời được câu hỏi của tôi.IEqualityComparer vs EqualityComparer?

MSDN says:

Chúng tôi khuyên bạn nên xuất phát từ các EqualityComparer (Of T) lớp thay vì thực hiện giao diện IEqualityComparer (Of T), vì EqualityComparer (Of T) kiểm tra lớp cho bình đẳng bằng cách sử dụng Phương thức IEquatable (Of T) .Equals thay vì phương thức Object.Equals.

nhưng nếu tôi nhìn vào thực hiện, cả hai đều sử dụng các loại generic:

public class AAA:IEqualityComparer<Box> 
    { 
     public bool Equals(Box x, Box y) 
     { 
     } 

     public int GetHashCode(Box obj) 
     { 
     } 
    } 

    public class BBB : EqualityComparer<Box> 
    { 
     public override bool Equals(Box x, Box y) 
     { 
     } 

     public override int GetHashCode(Box obj) 
     { 
     } 
    } 

tôi thiếu gì?

+3

Không có ý tưởng. Tuyên bố đó không có ý nghĩa với tôi. – CodesInChaos

+0

Các câu trả lời cho câu hỏi khác đã được giải thích rằng tuyên bố này không có ý nghĩa. Vì vậy, tôi không nhận được những gì bạn đang mong đợi trong câu hỏi này. – CodesInChaos

+3

có thể trùng lặp của [Preferring EqualityComparer to IEqualityComparer ] (http://stackoverflow.com/questions/5707347/preferring-equalitycomparert-to-iequalitycomparert) – CodesInChaos

Trả lời

3

Tôi nghĩ rằng other post bạn đề cập là nói rằng EqualityComparer<Box> thực hiện IEqualityComparer<Box>IEqualityComparer, vì vậy bạn không cần phải thực hiện cả giao diện chung và không chung chung nếu bạn xuất phát từ EqualityComparer<Box>.

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