검색결과 리스트
글
Implicit Operator
목차
.NET 을 오랫동안 써 왔지만, 체계적으로 책을 보면서 꼼꼼하게 배워온 것은 아닙니다. 그러다보니 놓친 부분일지 모르겠습니다만, 이번 시간에는 implicit 라는 녀석(conversion operators)에 대해서 간략히 살펴보려 합니다. 눈치 채셨겠지만, 저는 이 키워드를 모르고 있었어요 =_=; 쓸 일도 없었고, 어디에서 본 적도 없고;;; 그러다가 우연히 보게되었는데 나름 유용할듯 합니다.
개요
이 녀석은 말 그대로 함축적으로(?) 형변환을 시켜줍니다. 좀 특이한 녀석이죠.
예를들어 제가 Number 라는 클래스를 만들었습니다. 이놈은 프로퍼티로 Value 를 가집니다. 타입은 int 형이고요.
public class Number
{
public int Value { get; set; }
public Number(int num)
{
this.Value = num;
}
}
문제는 이 녀석이 정수처럼(int) 동작했으면 합니다. int x 와 사칙연산이 가능했으면 하는 것이지요.
int x = 10;
Number y = new Number(20);
int z = x + y;
어떻게 해야 가능할까요? 이때 사용할 수 있는 것이 implicit 입니다. 아래 코드처럼 메소드(?)를 추가해 주면 됩니다.
public class Number
{
public int Value { get; set; }
public Number(int num)
{
this.Value = num;
}
public static implicit operator int(Number num)
{
return num.Value;
}
public static implicit operator Number(int num)
{
return new Number(num);
}
}
쉽게 설명을 하려다보니, 예시가 그다지 좋지는 않습니다 :)
제가 실제로 유용하게 썼던 상황은 Win32 에서 사용하는 POINT 구조체와 WPF 에서 사용하는 Point 클래스간의 형변환 문제였습니다. 매번 POINT 를 가지고 Point 를 생성해서 형변환 하는것도 귀찮고, 그 반대도 마찬가지 였습니다. POINT 구조체 선언시 implicit 도 함께 넣어주니 편하더군요 :)
익숙치 않아서 그렇지, 염두에 두고 개발하다보면 의외로 유용하게 쓰일 곳이 많을 것 같아 보입니다.
'Microsoft > C#' 카테고리의 다른 글
BlockingQueue (0) | 2014.05.19 |
---|---|
C#,JScript, VisualBasic 을 스크립트처럼 사용하기 (0) | 2014.05.19 |
#warning, #error, #line 지시자 (0) | 2014.05.08 |
인증서(certification) 만들기 (1) | 2014.04.09 |
윈도우즈 방화벽 규칙 추가/설정/삭제하기 (3) | 2014.03.27 |
RECENT COMMENT