【发布时间】:2010-10-31 13:27:53
【问题描述】:
我刚刚在Async CTP website 上看到下一版本的 VB.NET 将具有迭代器。我猜他们包含了迭代器,因为重写过程类似于用于新 async/await 功能的过程。
但阅读解释该功能的文档后,我意识到 VB.NET 迭代器实际上将具有当今 C# 中不可用的功能,即:
- try/catch 块中的迭代器块
- 匿名迭代器块
这些是 C# 中的已知限制。有没有可能在 C# 5 中删除这些限制?如果没有,有什么理由可以在 VB.NET 而不是 C# 中完成?
【问题讨论】:
-
vb.net 一直是关于语言创新的,c# 虽然是一门不错的语言,但其核心并没有语言创新。基本上,vb.net 是一种更好的语言,如果你不接受它在 .net days.c 之前的坏名声。c# 没有 XML 文字,没有 xdocument 上的智能感知,更少的内置关键字超过 linq 到任何东西,没有 with 子句,更少可读,我应该继续吗?
-
C# 功能较少,人们喜欢这样,因为他们觉得使用一种语言创新较少的语言更聪明、更酷。他们购买 C/C++ 营销角度并使用 c#,因为他们认为它更酷,忘记了 vb6 != vb.net
-
问题不在于 VB.NET 比 C# 更好或更差,所以请不要开始拖钓……C# 的创新当然不比 VB 少。它从第 2 版(早于 VB 的 3 个版本)开始就有迭代器。 VB 中的 Lambda 表达式比 VS2008 中的 C# 受限得多。我个人认为 XML 文字是一件坏事™,而 VB 对我来说太冗长了。至于可读性,我发现 C# 更具可读性。这两种语言现在大多是等效的(功能上),所以你看,这主要是个人喜好问题......所以请避免这种无用的评论
-
顺便说一句,太糟糕了,我们不能对 cmets 投反对票...