Strict On 옵션에서는 ‘<type1>’에서 ‘<type2>’로의 암시적 변환을 허용하지 않음
형식 검사 스위치( Long
)가 Integer
으로 설정되어 있는 상태에서 형식을 값을 포함하지 못할 수 있는 다른 형식으로 변환하려고 했습니다(예:Long에서 On
로).
이 유형의 변환을 축소 변환이라고 하며 런타임에 실패할 수 있습니다. 이러한 이유로 Option Strict On
에서는 암시적 축소 변환을 허용하지 않습니다.
오류 ID: BC30512
<type1>
에서<type2>
로 변환된 형식이 있는지 여부를 확인합니다. 둘 다 Visual Basic 기본 형식이거나 둘 다 클래스의 인스턴스인 경우 일반적으로 확대 및 축소 변환의 표를 참조하여 해당 결정을 내릴 수 있습니다.<type1>
에서<type2>
로의 축소 변환만 있는 경우 명시적 캐스팅을 사용해야 합니다. 변환이 실패할 경우 CType 함수 및 DirectCast 연산자 키워드는 런타임 예외를 throw합니다. TryCast 연산자 키워드는 참조 형식에만 적용되며 변환이 실패하면 Nothing을 반환합니다.축소 변환이 있고 프로그램에서 런타임 오류를 허용할 수 있거나 런타임 오류가 가능하지 않다고 확신하는 경우 소스 코드의 시작 부분에서
Option Strict Off
를 지정할 수 있습니다. 그러나 예상치 못한 결과나 프로그램의 조기 종료를 방지하려면 변환을 Try...Catch...Finally 문 블록으로 묶어야 합니다.<type1>
에서<type2>
로의 변환이 없는 경우 프로그램 논리를 다시 평가해야 합니다. 값을<type2>
의 예상한 값에 해당하는<type1>
에 할당할 수 있는 코드를 작성할 수도 있습니다.<type1>
에서<type2>
로 변환된 항목이 없고 형식 중 하나가 정의한 클래스 또는 구조체인 경우 해당 형식 또는 다른 형식에서 변환 연산자를 정의할 수도 있습니다. 자세한 내용은 How to: Define a Conversion Operator을 참조하세요.모든 경우 및 일반적인 지침으로 오류를
Catch
블록으로 트랩하여 효과적으로 처리할 수 없는 경우 축소 변환을 사용하지 않아야 합니다.
.NET 피드백
.NET은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.