VB.NET vNext中的迭代器,以及C#中迭代器的局限性

时间:2010-10-31 13:27:54

标签: vb.net iterator c#-5.0

我刚刚在Async CTP website看到下一版本的VB.NET将有迭代器。我猜他们包括迭代器,因为重写过程类似于用于新async / await功能的重写过程。

但是阅读解释该功能的文档,我意识到VB.NET迭代器实际上具有今天在C#中不可用的功能,即:

  • try / catch块中的迭代器块
  • 匿名迭代器块

这些是C#中的已知限制。是否有可能在C#5中删除这些限制?如果没有,是否有任何理由可以在VB.NET中而不是在C#中完成?

1 个答案:

答案 0 :(得分:8)

  

是否有可能在C#5中删除这些限制?

机会很小。我当然不会指望它。这些都是“很棒的”功能,而不是“必须拥有”的功能,当你有大量的工作量时,“很高兴”的功能有时会从日程安排中脱颖而出他们是。

  

如果没有,是否有任何理由可以在VB.NET中而不是在C#中完成?

任何技术原因?不,当然有工程原因。

通常情况下,作为第二个实施特定功能的团队是有益的。第二种实现的实现者可以利用从第一次尝试中获得的知识,而不需要承担如此大的研发成本,同时不会产生任何维护或向后兼容性税。

VB的好处是没有这个功能,因此没有数百万行用户代码,他们需要100%向后兼容。这消除了相当大的成本负担。他们拥有一个庞大的错误报告数据库,设计说明等,这些都是在C#中使用这个功能的八年。