2014-12-05 86 views
1

爲什麼會出現在這個例子中,沒有錯誤,我如何使視覺工作室提醒我要禁止這種做法:Vb.net繼承的類

例如: 這裏有兩個對象:

Class Person 
Property name As String 
End Class 

Class Long_Term_Person 
Inherits Person 
Property address As String 
End Class 

這裏是測試代碼:

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 

爲什麼Test2不會失敗,當函數需要一個具有地址屬性的Long_term_person時,有沒有辦法讓視覺研究來標記這個?

+3

當然,請打開'Option Strict On'。 (這也是一個項目範圍內的設置,您應該將其設置爲默認設置;這是根據偏好設置的,但我不知道確切位置) – Ryan 2014-12-05 06:10:39

+0

@minitech,讓這個完整答案? – 2014-12-05 07:12:04

回答

1

無效的隱式轉換通常在編譯時標記。例如,如果用一個整數變量替換Get_Address(P)中的P,則會生成編譯時錯誤。

這不是繼承類的情況。對這些隱式轉換無效將產生運行時錯誤,而不會產生編譯錯誤,UNLESS vb.net被配置爲對所有隱式轉換生成警告或錯誤。您可以在Project,Properties,Compile中爲整個項目執行此操作。您可以選擇Option Strict on,也可以指定隱式轉換的操作。

您還可以在源文件的開頭添加Option Strict On,因此該選項僅適用於該文件。