gpt4 book ai didi

vb.net - 如何将子过程作为参数传递 VB.NET

转载 作者:行者123 更新时间:2023-12-04 02:14:50 25 4
gpt4 key购买 nike

我正在编写一个函数,该函数采用外部定义的子过程并根据包含的类中的变量运行它一定次数。你如何在 VB.NET 中将 Sub devs 作为参数传递?或者有什么替代方法? (更新:这是一个 WPF 应用程序的计时器类,我将在我正在制作的 Pong 游戏中使用该应用程序。新方法应该将一个子过程作为参数,然后它告诉另一个名为 Run() 的子程序执行该子程序每 x 毫秒一次)

最佳答案

您可以将您的方法( Sub )声明为采用 Action Delegate 范围。这允许您将 void 方法 ( HelloWorld ) 的地址作为参数传递:

Private Sub DoSomething(a As Action)
' pick a random number 1-5
Dim v = RNG.Next(1, 6)
' call whatever v times
For n As Int32 = 0 To v
a()
Next
End Sub

Private Sub HelloWorld()
Console.WriteLine("Null Spark says 'Hello, World!'")
End Sub

调用它只是:
DoSomething(AddressOf HelloWorld)

正如 MSDN 所指出的, Action封装了一个没有参数且不返回值的方法。要包含参数,请使用 Action(of T) (见下);要返回值(使用函数),请使用 Func , see this example

当涉及参数时,使用 Action(Of T) .您还可以将变量声明为 Action Delegates这可以使代码更易于阅读:
Private HelloAction As Action(Of Int32)

然后在某个地方像一个表单加载:
HelloAction = AddressOf HelloWorld
...
Private Sub DoSomething(a As Action(Of Int32))
Dim v = RNG.Next(1, 6)
For n As Int32 = 0 To v
a(n) ' pass the int param
Next
End Sub

在这种情况下, HelloWorld将是:
Private Sub HelloWorld(x As Integer)

关于vb.net - 如何将子过程作为参数传递 VB.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com