Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
IEqualityComparer (Interfaz)

Nota: esta interfaz es nueva en la versión 2.0 de .NET Framework.

Define métodos para admitir la comparación de objetos en concepto de igualdad.

Espacio de nombres: System.Collections
Ensamblado: mscorlib (en mscorlib.dll)

Visual Basic (Declaración)
<ComVisibleAttribute(True)> _
Public Interface IEqualityComparer
Visual Basic (Uso)
Dim instance As IEqualityComparer
C#
[ComVisibleAttribute(true)] 
public interface IEqualityComparer
C++
[ComVisibleAttribute(true)] 
public interface class IEqualityComparer
J#
/** @attribute ComVisibleAttribute(true) */ 
public interface IEqualityComparer
JScript
ComVisibleAttribute(true) 
public interface IEqualityComparer

Esta interfaz permite la implementación de comparación personalizada en concepto de igualdad para colecciones. Es decir, es posible crear una definición de igualdad propia y especificar que dicha definición se utilice con un tipo de colección que acepte la interfaz IEqualityComparer. En .NET Framework, los constructores de los tipos de colección Hashtable, NameValueCollection y OrderedDictionary aceptan esta interfaz.

Esta interfaz sólo admite comparaciones de igualdad. La interfaz IComparer proporciona la personalización de comparaciones para clasificar y ordenar.

Para obtener la versión genérica de esta interfaz, vea System.Collections.Generic.IEqualityComparer.

En el ejemplo de código siguiente se muestra la implementación de una interfaz IEqualityComparer que no distingue entre mayúsculas y minúsculas. En el ejemplo se utiliza el método CaseInsensitiveComparer.Compare para determinar si dos objetos son iguales, basándose en el objeto CultureInfo proporcionado.

Visual Basic
Public Class myCultureComparer
    Implements IEqualityComparer

    Dim myComparer As CaseInsensitiveComparer

    Public Sub New()
        myComparer = CaseInsensitiveComparer.DefaultInvariant
    End Sub

    Public Sub New(ByVal myCulture As CultureInfo)
        myComparer = New CaseInsensitiveComparer(myCulture)
    End Sub

    Public Function Equals1(ByVal x As Object, ByVal y As Object) _
        As Boolean Implements IEqualityComparer.Equals

        If (myComparer.Compare(x, y) = 0) Then
            Return True
        Else
            Return False
        End If
    End Function

    Public Function GetHashCode1(ByVal obj As Object) _
        As Integer Implements IEqualityComparer.GetHashCode
        Return obj.ToString().ToLower().GetHashCode()
    End Function
End Class
C#
class myCultureComparer : IEqualityComparer
{
    public CaseInsensitiveComparer myComparer;

    public myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer.DefaultInvariant;
    }

    public myCultureComparer(CultureInfo myCulture)
    {
        myComparer = new CaseInsensitiveComparer(myCulture);
    }

    public new bool Equals(object x, object y)
    {
        if (myComparer.Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int GetHashCode(object obj)
    {
        return obj.ToString().ToLower().GetHashCode();
    }
}
C++
ref class myCultureComparer : IEqualityComparer
{
private:
    CaseInsensitiveComparer^ myComparer;

public:
    myCultureComparer()
    {
        myComparer = CaseInsensitiveComparer::DefaultInvariant;
    }

    myCultureComparer(CultureInfo^ myCulture)
    {
        myComparer = gcnew CaseInsensitiveComparer(myCulture);
    }

    virtual bool Equals(Object^ x, Object^ y) 
    {
        if (myComparer->Compare(x, y) == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    virtual int GetHashCode(Object^ obj)
    {
        return obj->ToString()->ToLower()->GetHashCode();
    }
};

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

.NET Compact Framework

Compatible con: 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker