Ошибка использования Yield в VB.NET - аргументы метода должны быть заключены в скобки - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь создать рекурсивную функцию для возврата всех потомков элемента управления в IEnmerable(Of Control). Я создал функцию, возвращающую IEnumerable(Of Control) и использовал Yield:

Public Function GetControls(C As Control) As IEnumerable(Of Control)
    For Each Child As Control In C.Controls
        Yield Child
        For Each GrandChild In GetControls(Child)
            Yield GrandChild
        Next
    Next
End Function

Но у меня ошибка времени компиляции:

Ошибка BC30800, аргументы метода должны быть заключены в скобки.

Я пытался использовать его как функцию Yield(Child) или Yield Return Child или Return Yield Child, но все еще с ошибкой.

Я не смог найти ничего, связанного с проблемой, выполнив поиск сообщения об ошибке в Google или Bing. Как я могу решить проблему?

1 Ответ

0 голосов
/ 29 июня 2018

При использовании оператора Yield в VB.NET функция должна быть определена как Iterator:

Public Iterator Function GetControls(C As Control) As IEnumerable(Of Control)
    For Each Child As Control In C.Controls
        Yield Child
        For Each GrandChild In GetControls(Child)
            Yield GrandChild
        Next
    Next
End Function
...