C# 에서 클래스 비교하기?
먼저 예제를 보여 드리겠습니다. 실행 결과가 어떨까요?
C#을 처음 접하시는 분들은 ca와 cb 가 같을 거라 생각하실 겁니다. 하지만 ca와 cb 는 전혀 다른 것입니다.
클래스를 == 로 비교하는 것은 클래스 내부의 값을 비교하는 것이 아니라 클래스의 포인터를 비교한 것입니다.
(C# 에서는 포인터라는 말을 사용하지는 않지만;; 어쨌든 클래스의 위치(?)를 비교하는 것입니다.)
class WATProgram
{
static void Main(string[] args)
{
WATClass ca = new WATClass();
WATClass cb = new WATClass();
ca.A = 1;
cb.A = 1;
Console.WriteLine(“if (ca == cb) 비교에서는”);
if (ca == cb)
{
Console.WriteLine(“ca와cb는 같다.”);
}
else
{
Console.WriteLine(“ca와cb는 다르다”);
}
}
}
class WATClass
{
public int A=0;
public int B = 0;
}
C# 에서 클래스 속성 값 비교하기
속성 값을 비교하려면 어떻게 해야 할까요? 메소드를 직접 만들어야 합니다.
( 혹시 직접 만들지 않고 비교하는 방법이 있으면 알려 주세요 ^^. )
IsSame() 메소드를 만들어서 비교해 보겠습니다.
class WATProgram
{
static void Main(string[] args)
{
WATClass ca = new WATClass();
WATClass cb = new WATClass();
ca.A = 1;
cb.A = 1;
Console.WriteLine(“if (ca == cb) 비교에서는”);
if (ca == cb)
{
Console.WriteLine(“ca와cb는 같다.”);
}
else
{
Console.WriteLine(“ca와cb는 다르다”);
}
Console.WriteLine(“ca.IsSame(cb) 비교에서는”);
if (ca.IsSame(cb))
{
Console.WriteLine(“ca와cb는 같다.”);
}
else
{
Console.WriteLine(“ca와cb는 다르다”);
}
}
}
class WATClass
{
public int A=0;
public int B = 0;
public bool IsSame(WATClass _w)
{
if (this.A != _w.A) return false;
else if (this.B != _w.B) return false;
return true;
}
}
이제 원하는 결과가 나올 것입니다.
지금 클래스 비교를 잘못해서 생고생하다 다시 한번 정리해 봅니다.
미리미리 알아 두세요.~~