我試圖開發(fā)一個簡單的class-based函數(shù),它將修改函數(shù)確定的先前值,也就是說,它是一個遞歸關(guān)系。
本質(zhì)上,我正在開發(fā)自己的隨機(jī)數(shù)生成器,其工作方式與當(dāng)前隨機(jī)類的工作方式相同,即。
Dim ran as New Random(123456)
For i = 0 To 9
MessageBox.Show(ran.NextDouble & " " & ran.Next(1,11))
Next
我可以使用class-based方法成功地做到這一點(diǎn),只需發(fā)送一個ByRef值,但正如您所知,對于方法調(diào)用,需要將要修改的舊值放在對該方法的調(diào)用中。因此,我試圖克服方法或全局類型變量的使用,而是希望實(shí)例化的類以某種方式記住當(dāng)前值是什么。
下面的示例代碼試圖在每次函數(shù)調(diào)用期間將值_value
乘以2,因此預(yù)期結(jié)果為2、4、8、16等。然而,即使最初將2發(fā)送給構(gòu)造函數(shù),_value
的值始終返回為零。
Class Example
Public _value As Integer
Public Sub New(ByVal _value)
End Sub
Public Function Value() As Integer
_value *= 2
End Function
End Class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim x As New Example(2)
For i = 0 To 9
MessageBox.Show(x.Value)
Next
End Sub
通常字段為
Private
。如果要公開類中的數(shù)據(jù),可以使用Public Property
。更改
Sub New
的參數(shù)名稱。如果適當(dāng)?shù)叵薅四愕拿郑愕拿謺杏茫钊死Щ蟆D仨殞魅氲闹祱?zhí)行某些操作!將其分配給您的字段_value
。您的函數(shù)沒有返回值。它只是更改
_value
的值。如果您沒有返回任何內(nèi)容,請使用Sub
。將Function
的名稱更改為有意義的名稱。添加Return
語句以將值發(fā)送回調(diào)用代碼。