이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

IEqualityComparer<T> 인터페이스

개체가 같은지 비교할 수 있는 메서드를 정의합니다.

네임스페이스:  System.Collections.Generic
어셈블리:  mscorlib(mscorlib.dll)

public interface IEqualityComparer<in T>

형식 매개 변수

in T

비교할 개체의 형식입니다.

이 형식 매개 변수는 반공변입니다. 즉, 지정한 형식이나 더 적게 파생되는 모든 형식을 사용할 수 있습니다. 공 분산 및 반공 분산에 대한 자세한 내용은 제네릭의 공 분산과 반공 분산을 참조하십시오.

IEqualityComparer<T> 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드XNA Framework에서 지원이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원Equals지정한 개체가 같은지 여부를 확인합니다.
Public 메서드XNA Framework에서 지원이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원GetHashCode지정한 개체의 해시 코드를 반환합니다.
위쪽

이 인터페이스를 사용하면 컬렉션에 대해 사용자 지정 같음 비교를 구현할 수 있습니다. 즉, T 형식에 대한 사용자 고유의 같음 정의를 만들고 이 정의가 IEqualityComparer<T> 제네릭 인터페이스를 사용하는 컬렉션 형식과 함께 사용되도록 지정할 수 있습니다. .NET Framework에서는 Dictionary<TKey, TValue> 제네릭 컬렉션 형식의 생성자에서 이 인터페이스를 사용합니다.

이 인터페이스의 기본 구현은 EqualityComparer<T> 제네릭 클래스의 Default 속성에서 제공합니다. StringComparer 클래스는 String 형식의 IEqualityComparer<T>을 구현합니다.

이 인터페이스는 같음 비교만 지원합니다. 정렬 및 순서 지정에 대한 비교의 사용자 지정은 IComparer<T> 제네릭 인터페이스에서 제공합니다.

EqualityComparer<T> 클래스는 Object.Equals 메서드 대신 IEquatable<T>.Equals 메서드를 사용하여 같음을 테스트하므로 IEqualityComparer<T> 인터페이스를 구현하는 대신 EqualityComparer<T> 클래스에서 파생되는 것이 좋습니다. Dictionary<TKey, TValue> 클래스의 Contains, IndexOf, LastIndexOfRemove 메서드와 기타 제네릭 컬렉션으로 구성됩니다.

다음 예제에서는 사전 컬렉션에 사용자 지정 Box 개체를 추가합니다. Box 개체는 치수가 동일한 경우 같은 것으로 간주됩니다.


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

4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

이식 가능한 클래스 라이브러리

이식 가능한 클래스 라이브러리에서 지원

Windows 스토어 앱용 .NET

Windows 8에서 지원

Windows Phone 앱용 .NET

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(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft