다음을 통해 공유


선택적 매개 변수 <parametername>에 대한 선택적 값의 형식이 CLS 규격이 아닙니다.

업데이트: 2007년 11월

Type of optional value for optional parameter <parametername> is not CLS-compliant

기본값이 CLS 규격 형식이 아닌 Optional(Visual Basic) 매개 변수를 선언하는 프로시저가 <CLSCompliant(True)>로 표시되어 있습니다.

CLS(공용 언어 사양) 규격인 프로시저의 경우 CLS 규격 형식만 사용해야 합니다. 이는 매개 변수 형식, 반환 형식 및 모든 지역 변수 형식에 적용됩니다. 선택적 매개 변수의 기본값에도 적용됩니다.

다음과 같은 Visual Basic 데이터 형식은 CLS 규격이 아닙니다.

CLSCompliantAttribute 특성을 프로그래밍 요소에 적용하는 경우 이 특성의 isCompliant 매개 변수를 True나 False로 설정하여 규격 준수 여부를 나타내야 합니다. 이 매개 변수의 기본값이 없으므로 값을 제공해야 합니다.

CLSCompliantAttribute를 요소에 적용하지 않으면 이 요소는 CLS 규격이 아닌 것으로 간주됩니다.

기본적으로 이 메시지는 경고입니다. 경고를 숨기거나 경고를 오류로 처리하는 방법은 Visual Basic에서 경고 구성을 참조하십시오.

오류 ID: BC40042

이 오류를 해결하려면

  • 선택적 매개 변수에 이 형식의 기본값이 있어야 하는 경우 CLSCompliantAttribute를 제거합니다. 프로시저는 CLS 규격이 될 수 없습니다.

  • 프로시저가 CLS 규격이어야 하는 경우 이 기본값 형식을 가장 가까운 CLS 규격 형식으로 변경합니다. 예를 들어, 2,147,483,647이 넘는 값 범위가 필요하지 않으면 UInteger 대신 Integer를 사용할 수도 있습니다. 확장 범위가 필요하면 UInteger를 Long으로 바꿀 수 있습니다.

  • 자동화 개체 또는 COM 개체를 사용하는 경우 일부 형식의 데이터 너비가 .NET Framework의 경우와 다르다는 점을 기억하십시오. 예를 들어, int는 다른 환경에서 16비트인 경우가 많습니다. 그런 구성 요소에서 16비트 정수를 사용할 경우 관리되는 Visual Basic 코드에서 Integer 대신 Short로 선언합니다.

참고 항목

개념

CLS 규격 코드 작성