2012-03-04 4 views
8

J'ai lu ceci post mais cela ne répond pas à ma question.IEqualityComparer contre EqualityComparer?

MSDN says:

Nous vous recommandons de dériver de la classe EqualityComparer (Of T) au lieu de mettre en œuvre l'interface IEqualityComparer (Of T), parce que les tests de classe EqualityComparer (Of T) pour l'égalité en utilisant la Méthode IEquatable (Of T) .Equals au lieu de la méthode Object.Equals.

mais si je regarde la mise en œuvre, ils utilisent tous deux le type générique:

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) 
     { 
     } 
    } 

Qu'est-ce que je manque?

+3

Aucune idée. Cette déclaration n'a aucun sens pour moi. – CodesInChaos

+0

Les réponses à l'autre question ont déjà expliqué que cette déclaration n'a aucun sens. Donc, je ne comprends pas ce que vous attendez de cette question. – CodesInChaos

+3

duplication possible de [préférant EqualityComparer à IEqualityComparer ] (http://stackoverflow.com/questions/5707347/preferring-equalitycomparert-to-iequalitycomparert) – CodesInChaos

Répondre

3

Je pense que le other post vous mentionnez dit que EqualityComparer<Box> implémente IEqualityComparer<Box> et IEqualityComparer, de sorte que vous n'avez pas à mettre en œuvre les interfaces génériques et non génériques si vous dérivez de EqualityComparer<Box>.

Questions connexes