다음을 통해 공유


Option Strict On에서는 '<type1>'에서 '<type2>'(으)로 암시적으로 변환할 수 없습니다.

업데이트: 2007년 11월

Option Strict On disallows implicit conversions from '<type1>' to '<type2>'

형식 검사 스위치(Option Strict 문)가 On으로 설정된 상태에서, Long을 Integer로 변환하는 것과 같이 한 형식을 값을 포함할 수 없는 다른 형식으로 변환하려고 했습니다.

이러한 유형의 변환을 축소 변환이라고 하며, 축소 변환은 런타임에 실패할 수 있습니다. 그러므로 Option Strict On을 사용하면 암시적 축소 변환이 허용되지 않습니다.

오류 ID: BC30512

이 오류를 해결하려면

  1. <type1>에서 <type2>(으)로 형식을 변환할 수 있는지 여부를 확인합니다. 둘 다 Visual Basic 요소 형식이거나 클래스의 인스턴스일 경우 대개 확대 변환과 축소 변환에 있는 표를 참고하여 확인할 수 있습니다.

  2. <type1>에서 <type2>(으)로 축소 변환만 가능한 경우 명시적 캐스팅을 사용해야 합니다. 변환에 실패할 경우 CType 함수 키워드와 DirectCast 키워드는 런타임 예외를 throw하고, TryCast 키워드는 참조 형식에만 적용되어 변환에 실패할 경우 Nothing(Visual Basic)을 반환합니다.

  3. 축소 변환이 가능하고 프로그램에 런타임 오류를 허용하거나, 런타임 오류가 발생하지 않는다고 확신할 수 있는 경우에는 소스 코드 시작 부분에 Option Strict Off를 지정할 수 있습니다. 그러나 예기치 않은 결과나 프로그램의 조기 종료를 방지하려면 여전히 Try...Catch...Finally 문(Visual Basic) 블록에 변환을 포함해야 합니다.

  4. I<type1>에서 <type2>(으)로 변환이 허용되지 않으면 프로그램 논리를 다시 확인해야 합니다. <type1>의 예상 값에 해당하는 <type2>에 값을 할당할 수 있는 코드를 작성할 수도 있습니다.

  5. <type1>에서 <type2>(으)로 변환이 허용되지 않고 형식 중 하나가 정의된 클래스이거나 구조체일 경우 해당 형식과 다른 형식 간에 변환 연산자를 정의할 수 있습니다. 자세한 내용은 방법: 변환 연산자 정의를 참조하십시오.

  6. 어떤 경우라도 Catch 블록의 오류를 포착하여 효과적으로 처리할 수 없으면 축소 변환을 사용하지 않는 것이 일반적입니다.

참고 항목

작업

방법: 변환 연산자 정의

개념

확대 변환과 축소 변환

참조

Option Strict 문

CType 함수

DirectCast

TryCast

Nothing(Visual Basic)

Try...Catch...Finally 문(Visual Basic)