[英]How can I get my variable to change the value?
我需要將此變量click
設置為其他數字。 但是,當我重用ServicesForm()
,即使添加1后, click
也始終為0。如何為整個類設置變量?
的getter / setter:
Class ServicesVariables
Private click As Integer = 0
Public Property clicks() As Integer
Get
Return click
End Get
Set(ByVal value As Integer)
click = value
End Set
End Property
End Class
在這里嘗試使用它(刪除了我的大部分代碼,僅向您展示了主要部分):
Partial Class openapps_myapp Inherits System.Web.UI.Page
Private Sub ServicesForm()
Dim e As ServicesVariables = New ServicesVariables()
e.clicks += 1
End Sub
End Class
每次調用ServicesForm()
,都會創建一個ServicesVariables
類的New
實例,這意味着clicks
屬性的值每個實例僅更改一次。
如果希望它可重用,則需要通過在類級別進行聲明來更改ServicesVariables
對象的范圍:
Partial Class openapps_myapp Inherits System.Web.UI.Page
Private MyServicesVariables As ServicesVariables = New ServicesVariables()
Private Sub ServicesForm()
MyServicesVariables.clicks += 1
End Sub
End Class
補充筆記:
我更改了變量名稱,因為不建議在類級別專門使用一個字母變量。 但是,如果需要,您仍然可以使用任何其他變量名。
您不應該為該屬性及其后備私有字段使用相同的名稱。 例如,您可以命名屬性Clicks
和私有字段_clicks
。 實際上,這是可以遵循的良好慣例。
...也就是說,除非您打算更改clicks
屬性的邏輯,否則您可以擺脫private變量,並可以按如下所示縮短屬性:
Public Property Clicks As Integer
而已! 在這種情況下,這實際上就是您所需要的,這就是自動實現的屬性 。 編譯器會為您創建一個隱藏的后備字段,並負責該屬性的實現。
回到最初的問題 ,實際上還有另一種擁有可以在任何地方更改其值的屬性的方法,即創建一個Shared Property 。 共享屬性不需要類的實例即可使用它們,它們在所有實例之間共享 。
僅當共享成員不屬於該對象的實例時, 才應使用共享成員,換句話說,每個實例的值都不相同。 如果這是您最初想要的,則可以使ServicesVariables
類如下所示:
Public Class ServicesVariables
Public Shared Property Clicks As Integer
' ..
' ..
End Class
並且,在ServicesForm()
方法中,您可以直接訪問Clicks
屬性,而無需創建其類的實例:
Private Sub ServicesForm()
ServicesVariables.clicks += 1
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.