Итераторы в VB.NET vNext и ограничения итераторов в C # - PullRequest
4 голосов
/ 31 октября 2010

Я только что видел на сайте Async CTP , что в следующей версии VB.NET будут итераторы. Я предполагаю, что они включили итераторы, потому что процесс переписывания похож на тот, который использовался для новой функции async / await.

Но, читая документ, объясняющий эту функцию, я понял, что итераторы VB.NET на самом деле будут иметь функции, которые сегодня недоступны в C #, а именно:

  • блоков итераторов в блоке try / catch
  • анонимные блоки итераторов

Это были известные ограничения в C #. Есть ли вероятность, что эти ограничения будут сняты в C # 5? Если нет, то есть ли причина, по которой это можно сделать в VB.NET, а не в C #?

1 Ответ

8 голосов
/ 31 октября 2010

Есть ли вероятность, что эти ограничения будут сняты в C # 5?

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

Если нет, есть ли причина, по которой это можно сделать в VB.NET, а не в C #?

Любая техническая причина? Нет. Есть технические причины, конечно.

Часто бывает, что быть второй командой, реализующей определенную функцию, выгодно. Разработчики второй реализации получают возможность воспользоваться знаниями, полученными с первой попытки, не принимая на себя столь больших затрат на исследования и разработки, не неся при этом никаких расходов на обслуживание или обратную совместимость.

Преимущество VB в том, что эта функция уже не реализована, и, следовательно, он не имеет существующего тела из миллионов строк пользовательского кода, которые должны быть на 100% обратно совместимы. Это значительное бремя затрат снято. И у них есть большая база данных об ошибках, проектных заметках и т. Д. За восемь лет использования этой функции в C #.

...