如果您使用的是 VB9 (VS2008),我认为您无法轻松使用匿名函数——据我所知,VB9 中的匿名函数必须是真实函数(即它们必须返回一个value)Action<T>
而不返回任何东西。C# 2 的匿名方法和 C# 3 的 lambda 表达式更通用,这就是为什么您会看到大量使用List<T>.ForEach
C# 的示例而很少使用 VB 的原因:(
您可能会编写一个接受a并返回a 的MakeAction
包装器,但我怀疑对 VB9 匿名函数的其他限制会使这不切实际。Function<T,TResult>
Action<T>
好消息是VB10有更多的匿名功能支持。(C#4 和 VB10 正在获得彼此的功能 - 我相信 MS 从现在开始尝试在语言上进行平等,比以前更大。)
在那之前,要使用List<T>.ForEach
你需要编写一个适当的Sub
并使用AddressOf
它来创建一个委托。这是一个小例子:
Imports System
Imports System.Collections.Generic
Public Class Test
Shared Sub Main()
Dim names as New List(Of String)
names.Add("Jon")
names.Add("Holly")
names.ForEach(AddressOf PrintMe)
End Sub
Shared Sub PrintMe(ByVal text as String)
Console.WriteLine(text)
End Sub
End Class