Проблемы здесь не преобразование методы расширения - это преобразование блока итератора (метод использует yield return
VB не имеет эквивалентную конструкцию языка. - вы должны были бы создать свою собственную реализацию IEnumerable<T>
, который сделал фильтрацию, а затем возвращает экземпляр класса из метода расширения
Это именно то, что C#. компилятор, но он скрыт за кулисами.
Следует отметить, что это может быть не очевиден иначе: IEnumerator<T>
реализует IDisposable
, а петля foreach
имеет итератор в конце. Это может быть очень важно - так что если вы do создайте свою собственную реализацию (и я бы рекомендовал, чтобы вы этого не сделали, если честно), вам нужно будет позвонить Dispose
на итераторе, возвращенном с source.GetEnumerator()
в вашем собственном Dispose
методе ,
Автор George, 'Yield' работает в vb.net 10.0 (.Net 4.0)! – toddmo