2012-12-20 6 views
3

사용자 지정 구조체에서 작업 중이므로 다른 형식에서 암시 적으로 생성 할 수있는 기능을 제공하고 싶습니다.사용자 지정 유형 캐스팅

두 개의 구조체 유형이 있다고 가정 해보십시오. Color 및 ColorX입니다. 여기서 Color는 변경할 수없는 프레임 워크의 구조체입니다.

암시 적 연산자를 사용하여 예를 들어 말할 수 있습니다.

Color C; 
ColorX CX; 
CX = new ColorX(); 
C = CX; 

그러나 나는 다른 방법으로도 할 수 있기를 바랍니다. 직접 설정하거나 캐스트를 작성하십시오. 둘 다 할 수 있다는 것은 금이 될 것입니다. 예를 들어.

C = new Color(); 
CX = C; 

또는과 같이 캐스팅 :

CX = (ColorX)C; 

는 C#에서 다른 모든 유용한 연산자를 고려, 내가 확신 할 수있는 방법이있다, 난 그냥 구문을 찾을 수 없습니다.

도움을 주시면 대단히 감사하겠습니다. 고맙습니다.

답변

5

당신은 C#을에 implicit operator 함께 할 것입니다 :

public static implicit operator ColorX(Color original) 
{ 
    return new ColorX(original); 
} 
0

당신은 서로 관련이없는 두 종류의 캐스팅 수 없습니다. 내가 확장을 만들 것

는 호출 할 수

public static class ColorExtensions 
{ 
    public static ColorX AsColorX(this Color c) 
    { 
     return new ColorC(c); 
    } 
} 

메드

Color c = new Color(); 
ColorX cx = c.AsColorX();