Неожиданно функция итератора VB.Net не скомпилируется? - PullRequest
2 голосов
/ 19 сентября 2011

Уже несколько месяцев с помощью 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 больше не распознает синтаксис и функцию squiggles с «Ожидается конец оператора».

Недавно мой компьютер остался включенным (позор мне) с открытой Visual Studio, и он был автоматически отключен для установки некоторых обновлений Winows. После этого я не смог скомпилировать решение. 2 недели назад я обратился к резервной копии своего решения, чтобы убедиться, что я ничего не нашел и вижу ту же проблему.

Я также пытался удалить и переустановить .Net Framework Async CTP.

Из того, что я могу сказать, недавно я получил несколько> обновлений net Framework 4 и обновлений безопасности.

Я надеюсь, что кто-то еще сможет пролить свет на это и сэкономить мне потраченный день на телефоне с MS.

1 Ответ

0 голосов
/ 10 мая 2012

В определении вашей функции есть ошибка.Пожалуйста, проверьте документацию для объявления функций в VB.Я предполагаю, что вы перепутали это с C # или другим языком программирования.

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

Слово Итератор не должно использоваться между Shared и Function, потому что возвращаемое значение функции дано вконец функции с ... As IEnumerable (Of T).

Модификаторы процедуры Iterator доступны только для Visual Studio 11 и, следовательно, обычно не компилируются с VS 10 или ниже:

Итератор Процедура модификатор

...