突然VB.Net迭代器功能不会编译?

时间:2011-09-19 06:14:50

标签: .net vb.net iterator async-ctp

几个月以来,使用Async CTP成功编译后:

    Public Shared Iterator Function FindVisualChildren(Of T As DependencyObject)(ByVal depObj As DependencyObject) As IEnumerable(Of T)
    If depObj IsNot Nothing Then
        For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(depObj) - 1
            Dim child As DependencyObject = VisualTreeHelper.GetChild(depObj, i)
            If child IsNot Nothing AndAlso TypeOf child Is T Then

                Yield CType(child, T)
            End If

            For Each childOfChild As T In FindVisualChildren(Of T)(child)

                Yield childOfChild
            Next childOfChild
        Next i
    End If
End Function

突然间,情况不再如此。 Visual Studio不再能够识别语法并使用“预期语句结束”来扩散功能。

最近,我的机器在Visual Studio打开时保持开启(我感到羞耻),它自动关闭以安装一些Winows更新。那么,我一直无法编译解决方案。我在2周前找到了我的解决方案的备份副本,只是为了确保我没有做些什么,我也看到了同样的问题。

我也尝试卸载并重新安装.Net Framework Async CTP。

据我所知,最近,我收到了几个> net Framework 4更新和安全更新。

我希望其他人能够对此有所了解,并在MS手机上浪费我一天的时间。

1 个答案:

答案 0 :(得分:0)

在函数定义中,您有错误。请查看文档以声明VB中的函数。我猜你已经把它与C#或其他一些编程语言搞混了。

http://msdn.microsoft.com/en-gb/library/sect4ck6.aspx

不应在共享和函数之间使用单词Iterator,因为函数的返回值是在函数末尾给出的......作为IEnumerable(Of T)。

Iterator过程修饰符仅适用于Visual Studio 11,因此通常不会使用VS 10或更低版本进行编译:

Iterator Proceduremodifier