2014-12-05 4 views
1

왜이 예에 오류가없고는 내가 어떻게 비주얼 스튜디오를 어떻게해야합니까 이러한 행위를 금지 나 경고Vb.net 상속 클래스

Class TestClass 

Sub test1() 
    Dim LTP As New Long_Term_Person 
    Get_Address(LTP) 
End Sub 

Sub test2() 
    Dim P As New Person 
    Get_Address(P) 
End Sub 

Function Get_Address(LTP As Long_Term_Person) As String 
    Return LTP.address 
End Function 
End Class 
,369 : 여기
Class Long_Term_Person 
Inherits Person 
Property address As String 
End Class 

는 테스트 코드입니다

Test2가 실패하지 않는 이유는 함수가 주소 속성을 가진 Long_term_person을 필요로 할 때 시각적 인 연구에 이것을 표시하는 방법이 있습니까?

+3

물론 'Option Strict On'을 설정하십시오. (이것은 프로젝트 전체의 설정이기도하고, 기본값으로 설정해야하지만 환경 설정 아래에 있습니다. 정확히 어디에 있는지 모르겠습니다.) – Ryan

+0

@minitech, 완전한 대답을 만드시겠습니까? –

답변

1

잘못된 암시 적 변환은 일반적으로 컴파일 타임에 플래그가 지정됩니다. 예를 들어 Get_Address(P)의 P를 정수 변수로 바꾸면 컴파일 시간 오류가 발생합니다.

상속 된 클래스의 경우는 그렇지 않습니다. 잘못된 암시 적 변환은 런타임 오류를 발생 시키며 컴파일 오류는 발생시키지 않습니다. vb.net은 암시 적 변환에 대한 경고 또는 오류를 생성하지 않는 한 컴파일 오류가 아닙니다. Project, Properties, Compile에서 전체 프로젝트에 대해이 작업을 수행 할 수 있습니다. Option Strict on을 선택하거나 암시 적 변환에 대한 작업을 구체적으로 지정할 수 있습니다.

소스 파일의 시작 부분에 Option Strict On을 추가 할 수도 있습니다. 따라서이 옵션은 해당 파일에만 적용됩니다.