首先,請看看這個自定義按鈕,繼承用戶控件代碼:爲什麼我必須在這裏使用重載?
Public Class UserControl1
Dim _Text As String
Dim _Image As Image
<Browsable(True), Description("Gets or sets the text displayed on the button")> _
Overrides Property Text() As String
Get
Return _Text
End Get
Set(ByVal value As String)
_Text = value
MyBase.Text = value
End Set
End Property
<Browsable(True), Description("Gets or sets the image displayed on the button")> _
Overloads Property Image() As Image
Get
Return _Image
End Get
Set(ByVal value As Image)
_Image = value
'ReDrawMe()
End Set
End Property
End Class
這就是用戶控件的所有代碼。 Overrides
在Text
屬性是好的,但我不知道爲什麼VS告訴我我不能使用Overrides
在Image
財產,但我可以使用Overloads
。爲什麼?我認爲Overloads
只有在有多個名稱相同(不同參數)的方法時纔會使用。有兩件事情我還懷疑:
- 爲什麼
Image
在這個級別中唯一的財產申報,但必須叫Overloads
? Property
沒有任何參數(當然),所以Overloads
怎麼可能?
感謝您的閱讀。
如果那麼,爲什麼我們可以使用'Overloads'?它不僅僅用於方法嗎?而且,語言如何區分重載的屬性,因爲它們沒有任何獨特的參數? – 2011-05-27 11:07:16
@ W.N。你*可以*在VB中重載屬性,因爲VB中的屬性(不是在C#中!)可以有參數。爲什麼這裏有可能,我不知道。 – 2011-05-27 11:09:08
@ W.N。是一個特殊的「版本」的方法,封裝了一個getter和setter方法。 – Jodrell 2011-05-27 11:10:15