C #에서 .Equals 및 GetHashCode를 재정의해야하는 이유

user1943020

Entity Framework 5를 사용하고 있습니다. 내 C # 코드에서 두 개체가 같은지 비교하고 싶습니다. 없는 경우 업데이트를 발행하고 싶습니다.

.Equals 메서드와 gethascode 메서드를 재정의해야한다고 들었습니다. 내 수업은 다음과 같습니다.

public class Students    {
    public int PersonId { get; set; }
    public string Name { get; set; }
    public int Age {get; set;} 
}

.Equals 및 .GetHashCode를 재정의해야하는 이유를 설명 할 수 있습니다. 또한 누군가 나에게 예를 줄 수 있습니다. 특히 해시 코드에 대해 잘 모르겠습니다. 내 PersonId는이 클래스의 고유 번호입니다.

이름에 대한 아이디어 없음

여러 가지 이유로 두 가지 방법을 재정의해야합니다. GetHashCode에 삽입 및 검색에 사용 Dictionary하고 HashTable, 예를 들면. Equals메서드는 개체에 대한 동등성 테스트에 사용됩니다. 예를 들면 :

public partial class myClass
{
  public override bool Equals(object obj)
  {
     return base.Equals(obj);
  }

  public override int GetHashCode()
  {
     return base.GetHashCode();
  }
}

의 경우 다음 GetHashCode을 수행했을 것입니다.

  public int GetHashCode()
  {
     return PersonId.GetHashCode() ^ 
            Name.GetHashCode() ^ 
            Age.GetHashCode();
  }

GetHashCode메서드 를 재정의하는 경우을 재정의 해야 Equals하며 그 반대의 경우도 마찬가지입니다. 두 개체가 같은지 테스트 할 때 재정의 된 Equals메서드가 반환 true되는 경우 재정의 된 메서드는 두 개체에 대해 GetHashCode동일한 값을 반환해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Castle.Core에서 IProxyGenerationHook을 구현하는 클래스에서 Equals 및 GetHashCode의 재정의 메서드를 구현하는 방법은 무엇입니까?

분류에서Dev

UserRole이 Serializable을 구현하고 equals () 및 hashcode () 메서드를 재정의하는 이유

분류에서Dev

compareTo 메서드를 사용하여 hashCode 및 equals 메서드도 재정의해야합니까?

분류에서Dev

최종 클래스에 대해 equals () 및 hashCode () 메서드를 재정의해야합니까?

분류에서Dev

BigInteger 및 int에 equals를 사용할 수없는 이유는 무엇입니까?

분류에서Dev

C #에서 속성이 많은 클래스에 대해 Equals 재정의

분류에서Dev

효과적인 Java : 생성중인 객체가 서로 비교되지 않는 경우 equals () 및 hashCode ()를 재정의해야합니까?

분류에서Dev

파일 구조에서 마지막 상위 폴더를 인쇄하지만 중복을 가져 오는 중입니다 ... 아마도 equals 및 hashCode를 재정의해야합니까?

분류에서Dev

이 C 프로그램에서 유형 재정의 오류를 해결하는 방법

분류에서Dev

F #에서 식별 된 공용체에 대해 GetHashCode 및 CompareTo를 어떻게 재정의합니까?

분류에서Dev

F #에서 식별 된 공용체에 대해 GetHashCode 및 CompareTo를 어떻게 재정의합니까?

분류에서Dev

equals 및 hashCode를 재정의하면 잘못된 해싱 기능을 사용하여 Java의 Map에 데이터를 저장하는 데 어떤 영향을 미칩니 까?

분류에서Dev

== 및 .equals가 Java의 바이트 배열에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

복합 기본 키가있는 엔터티에서 equals / hashCode를 어떻게 재정의해야합니까?

분류에서Dev

C # : 자동으로 생성 된 equals / gethashcode / == /! =가없는 이유는 무엇입니까?

분류에서Dev

빈 생성자를 정의해야하는 이유 C ++

분류에서Dev

UITableView 메서드와 함께 재정의를 사용해야하는 이유는 무엇입니까?

분류에서Dev

C ++ 오버로드 및 참조 함수를 정의 할 때 각 함수에 참조 한정자가 있어야하는 이유

분류에서Dev

특정 HashSet 또는 HashMap에 대한 유형의 같음 및 해시 함수를 재정의하는 방법이 있습니까?

분류에서Dev

abstact 클래스 멤버에 대해 Kotlin에서 '재정의'키워드를 사용해야하는 이유는 무엇입니까?

분류에서Dev

hashCode () 및 equals ()를 통해서도 Hashmap 요소를 재정의 할 수 없습니까?

분류에서Dev

C #에서 GetHashCode () 정의

분류에서Dev

Array.CopyTo () 및 Equals () 이해

분류에서Dev

`@ abstractmethod`를 재정의하는 메서드에 대한 유형 힌트를 제공해야합니까?

분류에서Dev

Visual Studio 직접 실행 창에서 Button 개체에 대한 IntelliSense 옵션으로 Equals / GetHashCode / GetType / ToString이 표시되는 이유는 무엇입니까?

분류에서Dev

Visual Studio 직접 실행 창에서 Button 개체에 대한 IntelliSense 옵션으로 Equals / GetHashCode / GetType / ToString이 표시되는 이유는 무엇입니까?

분류에서Dev

Dictionary 및 HashSet이있는 GetHashCode 메서드

분류에서Dev

Frama-C v20.0 Calcium이 비전 역 범위에서 typedef 재정의를 지원하지 않는 이유

분류에서Dev

이 코드의 C에서 내 오류는 무엇입니까? FILE 처리 및 BST를 사용해야하는 라이브러리 카탈로그입니다.

Related 관련 기사

  1. 1

    Castle.Core에서 IProxyGenerationHook을 구현하는 클래스에서 Equals 및 GetHashCode의 재정의 메서드를 구현하는 방법은 무엇입니까?

  2. 2

    UserRole이 Serializable을 구현하고 equals () 및 hashcode () 메서드를 재정의하는 이유

  3. 3

    compareTo 메서드를 사용하여 hashCode 및 equals 메서드도 재정의해야합니까?

  4. 4

    최종 클래스에 대해 equals () 및 hashCode () 메서드를 재정의해야합니까?

  5. 5

    BigInteger 및 int에 equals를 사용할 수없는 이유는 무엇입니까?

  6. 6

    C #에서 속성이 많은 클래스에 대해 Equals 재정의

  7. 7

    효과적인 Java : 생성중인 객체가 서로 비교되지 않는 경우 equals () 및 hashCode ()를 재정의해야합니까?

  8. 8

    파일 구조에서 마지막 상위 폴더를 인쇄하지만 중복을 가져 오는 중입니다 ... 아마도 equals 및 hashCode를 재정의해야합니까?

  9. 9

    이 C 프로그램에서 유형 재정의 오류를 해결하는 방법

  10. 10

    F #에서 식별 된 공용체에 대해 GetHashCode 및 CompareTo를 어떻게 재정의합니까?

  11. 11

    F #에서 식별 된 공용체에 대해 GetHashCode 및 CompareTo를 어떻게 재정의합니까?

  12. 12

    equals 및 hashCode를 재정의하면 잘못된 해싱 기능을 사용하여 Java의 Map에 데이터를 저장하는 데 어떤 영향을 미칩니 까?

  13. 13

    == 및 .equals가 Java의 바이트 배열에서 작동하지 않는 이유는 무엇입니까?

  14. 14

    복합 기본 키가있는 엔터티에서 equals / hashCode를 어떻게 재정의해야합니까?

  15. 15

    C # : 자동으로 생성 된 equals / gethashcode / == /! =가없는 이유는 무엇입니까?

  16. 16

    빈 생성자를 정의해야하는 이유 C ++

  17. 17

    UITableView 메서드와 함께 재정의를 사용해야하는 이유는 무엇입니까?

  18. 18

    C ++ 오버로드 및 참조 함수를 정의 할 때 각 함수에 참조 한정자가 있어야하는 이유

  19. 19

    특정 HashSet 또는 HashMap에 대한 유형의 같음 및 해시 함수를 재정의하는 방법이 있습니까?

  20. 20

    abstact 클래스 멤버에 대해 Kotlin에서 '재정의'키워드를 사용해야하는 이유는 무엇입니까?

  21. 21

    hashCode () 및 equals ()를 통해서도 Hashmap 요소를 재정의 할 수 없습니까?

  22. 22

    C #에서 GetHashCode () 정의

  23. 23

    Array.CopyTo () 및 Equals () 이해

  24. 24

    `@ abstractmethod`를 재정의하는 메서드에 대한 유형 힌트를 제공해야합니까?

  25. 25

    Visual Studio 직접 실행 창에서 Button 개체에 대한 IntelliSense 옵션으로 Equals / GetHashCode / GetType / ToString이 표시되는 이유는 무엇입니까?

  26. 26

    Visual Studio 직접 실행 창에서 Button 개체에 대한 IntelliSense 옵션으로 Equals / GetHashCode / GetType / ToString이 표시되는 이유는 무엇입니까?

  27. 27

    Dictionary 및 HashSet이있는 GetHashCode 메서드

  28. 28

    Frama-C v20.0 Calcium이 비전 역 범위에서 typedef 재정의를 지원하지 않는 이유

  29. 29

    이 코드의 C에서 내 오류는 무엇입니까? FILE 처리 및 BST를 사용해야하는 라이브러리 카탈로그입니다.

뜨겁다태그

보관