이 Person 클래스에 대해 어떻게 생각하십니까? Equals와 GetHashCode를 재정의하는 것이 나쁜 생각입니까 아니면 모범 사례입니까?같음 및 GetHashCode
public class Person {
public int PersonId { get; set; }
public string Name { get; set; }
public override bool Equals(object obj) {
var person = obj as Person;
return PersonId == person.PersonId;
}
public override int GetHashCode() {
return PersonId;
}
}
사용법 :
static void Main(string[] args) {
var list = new List<Person>();
list.Add(new Person(){ PersonId = 1, Name = "Mike"});
list.Add(new Person() { PersonId = 2, Name = "Michael Sync" });
list.Add(new Person(){ PersonId = 1, Name = "Mike"});
var list1 = new List<Person>();
list1.Add(new Person() { PersonId = 1, Name = "Mike" });
list1.Add(new Person() { PersonId = 3, Name = "Julia" });
var except = list.Except(list1);
foreach (var item in except) {
Console.WriteLine(item.Name);
}
Console.ReadKey();
}
+1 불변성에 대한 좋은 지적. –
GetHashCode는 기본적으로 Jon Skeet 박쥐 신호입니까? –
그래서 대부분의 UI 엔티티는 IEquatable로 구현해야합니다. 제안 해 주셔서 감사드립니다. –