연산자 오버로딩(==, !=)
연산자 오버로딩 중 ==(같다), !=(다르다) 체크는 쌍으로 이루어 져야 한다.
둘 중에 하나만 존재하지 못한다.
아래의 예제 샘플은
새로운 클래스의 key라는 string변수 값이 같은지 체크하여
bool을 리턴하도록 ==, !=연산자를 오버로딩 하였다.
//새로운 클래스
public class EquipmentActor
{
public string key; //키값변수
//단순하게 아래처럼 비교하면 null 과 비교 할 수 없어서 위험하다.
//public static bool operator ==(EquipmentActor x, EquipmentActor y)
//{
// if (x.key.Equals(y.key))
// return true;
// else return false;
//}
//public static bool operator !=(EquipmentActor x, EquipmentActor y)
//{
// if (x.key.Equals(y.key))
// return false;
// else return true;
//}
//object로 바꾸어 null비교를 하고 진행한다.
public static bool operator ==(EquipmentActor x, EquipmentActor y)
{
if ((object)x == null && (object)y == null) return true;
else if (((object)x != null && (object)y != null) && x.key == y.key) return true;
else return false;
}
public static bool operator !=(EquipmentActor x, EquipmentActor y)
{
return !(x == y);
}
//근데 가장 심플한건 if비교 할때 if((object)변수 == nullptr)하는게 제일 깔끔한거 같다. 그러면 위의 object바꾸는건 다 없어질텐데...
}
'공부 > C#' 카테고리의 다른 글
C#에서의 상수 사용 - c++의 #define 같은 활용 방안 (0) | 2016.06.16 |
---|---|
C# 배열 비우기 - Array.Clear, Array.Copy, Array.Resize 이용 (0) | 2016.06.13 |
C# 람다 식 (0) | 2016.06.08 |
C# Windows Forms - 오목 (0) | 2016.05.31 |
소켓 통신, 웹 통신(간략 설명, 메모) (0) | 2016.05.28 |