Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

IEqualityComparer<T> (Interfaz)

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

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

public interface IEqualityComparer<in T>

Parámetros de tipo

in T

Tipo de objetos que se van a comparar.

Este parámetro de tipo es contravariante. Es decir, puede usar el tipo especificado o cualquier tipo menos derivado. Para obtener más información sobre la covarianza y la contravarianza, vea Covarianza y contravarianza en genéricos.

El tipo IEqualityComparer<T> expone los siguientes miembros.

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEqualsDetermina si los objetos especificados son iguales.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetHashCodeDevuelve un código hash para el objeto especificado.
Arriba

Esta interfaz permite la implementación de comparación personalizada en concepto de igualdad para colecciones. Esto es, puede crear su propia definición de igualdad para el tipo T y especificar que esta definición se utilice con un tipo de colección que admita la interfaz genérica IEqualityComparer<T>. En .NET Framework, los constructores del tipo de colección genérica Dictionary<TKey, TValue> aceptan esta interfaz.

La propiedad Default de la clase genérica EqualityComparer<T> proporciona una implementación predeterminada de esta interfaz. La clase StringComparer implementa la interfaz IEqualityComparer<T> de tipo String.

Esta interfaz sólo admite comparaciones de igualdad. La interfaz genérica IComparer<T> proporciona la personalización de comparaciones para clasificar y ordenar.

Recomendamos que se derive de la clase EqualityComparer<T> en lugar de implementar la interfaz IEqualityComparer<T>, porque las pruebas de clase EqualityComparer<T> para igualdad usan el método IEquatable<T>.Equals en lugar del método Object.Equals. Esto es coherente con los métodos Contains, IndexOf, Remove y LastIndexOf de la clase Dictionary<TKey, TValue> y otras colecciones genéricas.

En el ejemplo siguiente se agregan objetos Box personalizados a una colección de diccionarios. Los objetos Box se consideran iguales si tienen las mismas dimensiones.


using System;
using System.Collections.Generic;
class Example
{
    static void Main()
    {
        try
        {

            BoxEqualityComparer boxEqC = new BoxEqualityComparer();

            Dictionary<Box, String> boxes = new Dictionary<Box,
                                                string>(boxEqC);

            Box redBox = new Box(4, 3, 4);
            Box blueBox = new Box(4, 3, 4);

            boxes.Add(redBox, "red");
            boxes.Add(blueBox, "blue");

            Console.WriteLine(redBox.GetHashCode());
            Console.WriteLine(blueBox.GetHashCode());
        }
        catch (ArgumentException argEx)
        {

            Console.WriteLine(argEx.Message);
        }
    }
}

public class Box
{
    public Box(int h,  int l, int w)
    {
        this.Height = h;
        this.Length = l;
        this.Width = w;
    }
    public int Height { get; set; }
    public int Length { get; set; }
    public int Width { get; set; }
}


class BoxEqualityComparer : IEqualityComparer<Box>
{

    public bool Equals(Box b1, Box b2)
    {
        if (b1.Height == b2.Height & b1.Length == b2.Length
                            & b1.Width == b2.Width)
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    public int GetHashCode(Box bx)
    {
        int hCode = bx.Height ^ bx.Length ^ bx.Width;
        return hCode.GetHashCode();
    }

}





.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft