簡體   English   中英

如何獲取變量以更改值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM