作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个函数,该函数采用外部定义的子过程并根据包含的类中的变量运行它一定次数。你如何在 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)
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/
我是一名优秀的程序员,十分优秀!