Employee 클래스 e와 e1의 두 인스턴스를 만들고 있습니다. e는 toe1에 할당됩니다. 두 개체 모두 동일한 참조를 가리키고 있으므로 모든 Equals에 대해 예상대로 true 출력을 얻습니다.
두 번째 경우에는 속성 값이 동일하더라도 관찰할 수 있습니다.Equals는 false를 반환합니다. 기본적으로 인수가 다른 개체를 참조할 때.Equals는 값을 확인하지 않고 항상 false를 반환합니다.
예시 1
class Program{
static void Main(string[] args){
Employee e = new Employee();
e.Name = "Test";
e.Age = 27;
Employee e2 = new Employee();
e2 = e;
var valueEqual = e.Equals(e2);
Console.WriteLine(valueEqual);
//2nd Case
Employee e1 = new Employee();
e1.Name = "Test";
e1.Age = 27;
var valueEqual1 = e.Equals(e1);
Console.WriteLine(valueEqual1);
Console.ReadLine();
}
}
class Employee{
public int Age { get; set; }
public string Name { get; set; }
} 출력
True False
예시 2
class Program{
static void Main(string[] args){
Employee e = new Employee();
e.Name = "Test";
e.Age = 27;
Employee e2 = new Employee();
e2 = e;
var valueEqual = e.Equals(e2);
Console.WriteLine(valueEqual);
Employee e1 = new Employee();
e1.Name = "Test";
e1.Age = 27;
var valueEqual1 = e.Equals(e1);
Console.WriteLine(valueEqual1);
Console.ReadLine();
}
}
class Employee{
public int Age { get; set; }
public string Name { get; set; }
public override bool Equals(object? obj){
if (obj == null)
return false;
if (this.GetType() != obj.GetType()) return false;
Employee p = (Employee)obj;
return (this.Age == p.Age) && (this.Name == p.Name);
}
public override int GetHashCode(){
return Age.GetHashCode() ^ Name.GetHashCode();
}
} 출력
True True