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; } } |
이제 원하는 결과가 나올 것입니다.
지금 클래스 비교를 잘못해서 생고생하다 다시 한번 정리해 봅니다.
미리미리 알아 두세요.~~
'스터디 > C#.NET:자료' 카테고리의 다른 글
프로그램 시작 위치 얻기 (1) | 2011.04.29 |
---|---|
C#, RichTextBox 에서 그림 삽입(파일명, 리소스) (0) | 2011.03.30 |
C# DataGridView 간단하게 필터 기능 사용하기 (6) | 2011.03.29 |
C#, 문자열 암호화, 복호화 예제 (0) | 2011.03.03 |
C#, Queue 사용하기 (0) | 2011.02.23 |
정렬, Aligment 의 Enumeration 사용하기 (0) | 2011.01.23 |
Visual Studio 2005, 2008 환경설정 –줄번호, 단축키 설정 (0) | 2011.01.05 |
C#, 사용자 정의 컨트롤 사용하기 (0) | 2011.01.05 |
C#, 사용자 정의 컨트롤 만들기 (0) | 2011.01.05 |
C# 에서 리소스 문자열 사용하기 (Resource String ) (0) | 2010.12.14 |