这个问题很古老,但对于来自Google的人来说有一个好消息 - VB.NET的新版本支持c#yield return操作符(我相信这是VS.NET 2010/2012 w/.net 4.0)...这里是转换后的样品:
<System.Runtime.CompilerServices.Extension> _
Public Iterator Function Where(Of TSource)(source As IEnumerable(Of TSource), predicate As Func(Of TSource, [Boolean])) As IEnumerable(Of TSource)
'' non-lambda version of the method body
'For Each element As TSource In source
' If predicate(element) Then
' Yield element
' End If
'Next
For Each element As TSource In From item In source Where predicate(item)
Yield element
Next
End Function
没有必要改变静态共享作为VB.NET扩展方法必须在其中被自动“共享”或静态模块来定义。
作者George,`Yield`在vb.net 10.0(.Net 4.0)中可用! – toddmo 2015-02-19 01:44:00