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;

}

}

 

 

 

 

이제 원하는 결과가 나올 것입니다.

 

 

 

 

지금 클래스 비교를 잘못해서 생고생하다 다시 한번 정리해 봅니다.

 

미리미리 알아 두세요.~~

+ Recent posts