변환 연산자
변환 연산자는 개체의 형식을 변환합니다. 변환 연산자에는 암시적 변환 연산자와 명시적 변환 연산자가 있습니다. 암시적 변환 연산자는 변환을 수행하기 위해 소스 코드에 형식 캐스팅을 지정하지 않아도 됩니다. 명시적 변환 연산자는 변환을 수행하기 위해 소스 코드에 형식 캐스팅이 필요합니다.
다음 시그니처는 Point와 Size 간의 변환을 위한 Point 클래스의 명시적 변환 연산자를 보여 줍니다.
[Visual Basic]
Public Shared Function op_Explicit( _
ByVal p As Point _
) As Size
/c
public static Size op_Explicit(
Point p
);
최종 사용자가 해당 변환을 명확하게 예상하지 않는 경우 변환 연산자를 제공하지 않습니다.
변환 연산자 정의를 지원하기 위해서는 고객 검색 데이터가 있는 것이 가장 좋습니다. 또는 하나 이상의 유사한 형식에 해당 변환이 필요한 예제의 형식으로 연산자 정의를 지원할 수 있습니다.
변환 연산자를 형식 도메인 외부에 정의하지 않습니다.
예를 들어, Int32, Double 및 Decimal은 모두 숫자 형식이지만 DateTime은 숫자 형식이 아닙니다. DateTime 형식으로의 Double 형식 변환은 변환 연산자로서 구현되어서는 안 됩니다. 동일한 도메인에 없는 다른 형식으로 형식을 변환하려면 생성자를 사용합니다.
변환 내용이 손실될 수 있는 경우 암시적 변환 연산자를 제공하지 않습니다.
예를 들어, Double의 정밀도가 Single보다 높으므로 Double에서 Single로의 암시적 변환을 수행해서는 안 됩니다. 명시적 변환 연산자는 손실될 수 있는 변환에 대해 제공할 수 있습니다.
암시적 캐스팅에서 예외를 throw하지 않습니다.
암시적 캐스팅은 시스템에서 호출됩니다. 따라서 사용자는 현재 변환이 수행되고 있는지 알 수 없어 코드를 쉽게 디버깅할 수 없습니다.
캐스트 연산자를 호출하여 손실될 수 있는 변환이 수행되고 연산자에 대한 계약에서 손실될 수 있는 변환을 지원하지 않는 경우 System.InvalidCastException을 throw합니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.