2

几个月来,使用 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 电话上浪费的一天。

4

1 回答 1

0

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

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

不应在 Shared 和 Function 之间使用 Iterator 这个词,因为 Function 的返回值在 Function 的末尾以 ... As IEnumerable(Of T) 给出。

Iterator proceduremodifiers 仅适用于 Visual Studio 11,因此通常无法使用 VS 10 或更低版本进行编译:

迭代器过程修饰符

于 2012-05-10T13:17:33.753 回答