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; } } |
이제 원하는 결과가 나올 것입니다.
지금 클래스 비교를 잘못해서 생고생하다 다시 한번 정리해 봅니다.
미리미리 알아 두세요.~~
- [2018/02/26] List 에서 고유값 얻기 ()
- [2015/05/22] C#, 아두이노 간의 WIFI 통신으로 LCD 제어 (4566)
- [2015/03/13] 항상 마지막에 추가한 TEXT 보이게 ()
- [2014/01/17] ComboBox Text 편집 안되게 (14491)
- [2014/01/08] if 문에서 여러개 비교할때 (25341) *3
- [2013/12/30] C++, C# 간단한 기능 비교 (12885)
- [2013/12/18] 3자리마다 ,(콤마) 찍기 (원화, 달러 표시) (15224)
- [2013/09/29] 설치된 IE 버전 얻기 (12401)
- [2013/08/29] byte array to Hexa String (13026)
- [2013/06/25] string array to string (스트링 문자열 합치기) (23714)