函数中的递归值
Recursive value in a function
我正在尝试开发一个简单的基于class的函数,它将修改函数确定的先前值,即它是递归关系。
本质上,我正在开发自己的随机数生成器,其工作方式与当前随机 class 的工作方式相同,即
Dim ran as New Random(123456)
For i = 0 To 9
MessageBox.Show(ran.NextDouble & " " & ran.Next(1,11))
Next
我可以使用基于 class 的方法成功完成此操作,只需发送一个值 ByRef,但如您所知,对于方法调用,需要将要修改的旧值放在对方法。因此,我试图克服方法或全局类型变量的使用,而是希望实例化的 class 以某种方式记住当前值是什么。
下面的示例代码尝试在每次函数调用期间将值 _value
乘以 2,因此预期结果将是 2、4、8、16 等。但是,即使 2 最初是发送给构造函数,_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
。如果您想公开 class 中的数据,您可以使用 Public Property
.
更改 Sub New
的参数名称。如果适当地限定您的名字将起作用,但它会令人困惑。您必须对传入的值执行某些操作!将其分配给您的字段 _value
.
您的函数没有 return 值。它只是更改 _value
的值。如果你没有 return 任何东西,请使用 Sub
。将 Function
的名称更改为有意义的名称。添加 Return
语句以将值发送回调用代码。
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.DoubleValue.ToString)
Next
End Sub
Class Example
Private _value As Integer
Public Sub New(ByVal Input As Integer)
_value = Input
End Sub
Public Function DoubleValue() As Integer
_value *= 2
Return _value
End Function
End Class
我正在尝试开发一个简单的基于class的函数,它将修改函数确定的先前值,即它是递归关系。
本质上,我正在开发自己的随机数生成器,其工作方式与当前随机 class 的工作方式相同,即
Dim ran as New Random(123456)
For i = 0 To 9
MessageBox.Show(ran.NextDouble & " " & ran.Next(1,11))
Next
我可以使用基于 class 的方法成功完成此操作,只需发送一个值 ByRef,但如您所知,对于方法调用,需要将要修改的旧值放在对方法。因此,我试图克服方法或全局类型变量的使用,而是希望实例化的 class 以某种方式记住当前值是什么。
下面的示例代码尝试在每次函数调用期间将值 _value
乘以 2,因此预期结果将是 2、4、8、16 等。但是,即使 2 最初是发送给构造函数,_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
。如果您想公开 class 中的数据,您可以使用 Public Property
.
更改 Sub New
的参数名称。如果适当地限定您的名字将起作用,但它会令人困惑。您必须对传入的值执行某些操作!将其分配给您的字段 _value
.
您的函数没有 return 值。它只是更改 _value
的值。如果你没有 return 任何东西,请使用 Sub
。将 Function
的名称更改为有意义的名称。添加 Return
语句以将值发送回调用代码。
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.DoubleValue.ToString)
Next
End Sub
Class Example
Private _value As Integer
Public Sub New(ByVal Input As Integer)
_value = Input
End Sub
Public Function DoubleValue() As Integer
_value *= 2
Return _value
End Function
End Class