영어로 읽기

다음을 통해 공유


Strict On 옵션에서는 ‘<type1>’에서 ‘<type2>’로의 암시적 변환을 허용하지 않음

형식 검사 스위치( Long )가 Integer으로 설정되어 있는 상태에서 형식을 값을 포함하지 못할 수 있는 다른 형식으로 변환하려고 했습니다(예:Long에서 On로).

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

오류 ID: BC30512

이 오류를 해결하려면

  1. <type1> 에서 <type2>로 변환된 형식이 있는지 여부를 확인합니다. 둘 다 Visual Basic 기본 형식이거나 둘 다 클래스의 인스턴스인 경우 일반적으로 확대 및 축소 변환의 표를 참조하여 해당 결정을 내릴 수 있습니다.

  2. <type1> 에서 <type2>로의 축소 변환만 있는 경우 명시적 캐스팅을 사용해야 합니다. 변환이 실패할 경우 CType 함수DirectCast 연산자 키워드는 런타임 예외를 throw합니다. TryCast 연산자 키워드는 참조 형식에만 적용되며 변환이 실패하면 Nothing을 반환합니다.

  3. 축소 변환이 있고 프로그램에서 런타임 오류를 허용할 수 있거나 런타임 오류가 가능하지 않다고 확신하는 경우 소스 코드의 시작 부분에서 Option Strict Off 를 지정할 수 있습니다. 그러나 예상치 못한 결과나 프로그램의 조기 종료를 방지하려면 변환을 Try...Catch...Finally 문 블록으로 묶어야 합니다.

  4. <type1> 에서 <type2>로의 변환이 없는 경우 프로그램 논리를 다시 평가해야 합니다. 값을 <type2> 의 예상한 값에 해당하는 <type1>에 할당할 수 있는 코드를 작성할 수도 있습니다.

  5. <type1> 에서 <type2> 로 변환된 항목이 없고 형식 중 하나가 정의한 클래스 또는 구조체인 경우 해당 형식 또는 다른 형식에서 변환 연산자를 정의할 수도 있습니다. 자세한 내용은 How to: Define a Conversion Operator을 참조하세요.

  6. 모든 경우 및 일반적인 지침으로 오류를 Catch 블록으로 트랩하여 효과적으로 처리할 수 없는 경우 축소 변환을 사용하지 않아야 합니다.

참고 항목