对于我来说,对于Java生态系统的发展所许账单多年。 然而,几年来,我一直主要在.NET空间中工作。 最初,我的过渡到.NET世界是由写作和维护VB.Net代码。 VS经过多年与Eclipse / Java的组合工作提供了几乎所有我来到了期待漂亮的智能感知支持。 最后,我的雇主决定在C#中做新的发展。 我对C#的IntelliSense支持的最初印象是比恒星。 有时它好像VS对C#没有后台编译器,但偶尔也做一些事情聪明,说明有一些后台处理有,但还不足以真正提高生产力以有意义的方式。 是否有任何理智的技术原因,对于这两种语言之间的IntelliSense支持这种差异?
Answer 1:
已经有C#和VB之间的间隙一段时间了。 VB产生大量的代码为您服务。 例如,完成后点击进入一个“如果”的声明将自动添加“然后”在该行结束时,如果你离开它关闭,并与“结束如果”部分关闭它。 在C#它给你添加的启动和关闭{}大括号。
VB长C#之前已经有后台编译。 事实上,这是利用了ReSharper的主要吸引力的因素,这提供了这样的功能之一。 然而,由于VS 2008 / .NET 3.5 SP1的所有改变。 您可以阅读斯科特谷的有关职务这里 ,但我会贴上相关的部分:
“C#代码编辑器现在可识别和显示了以前需要明确编译识别许多语义代码问题的红色波浪线的错误。例如,如果你试图声明,并在C#代码编辑器中使用一个未知类型今天你不会看到编译错误,直到你做一个版本。现在有了SP1,你会立即看到实际的红色波浪线误差(不需要明确的编译)“。
使用的CodeRush ReSharper的或绝对增强了共同声明会让一个VB开发人员感觉一直存在的无缝过渡的自动完成的经验。
这并不完全解决技术问题,但开发团队是不同的,并没有必要做同样的事情。 换句话说,有没有可能是共同的做法。 本博客文章摘录,通过对VB团队技术主管,支持此:
“后台编译”是VB,让你一个完整的错误在您键入的功能。 谁来回移动VB和C#的通知本之间,但VB-只有开发者可能没有意识到,其他语言如C#并不总是给你100%准确的智能感知,并不总是给你所有存在的错误的人在你的代码。 这是因为他们的智能感知引擎是分开的,按比例缩小的编译器不做全编译的背景。 VB,在另一方面,从开始编译整个项目完成作为Visual Studio中闲置,使我们能够立即填充完全准确的错误任务列表,并允许我们给你完全正确的智能感知。
最后要注意的是最近的Channel9的采访与C#/ VB / F#团队,卢卡·波隆尼,他强调了语言如何不再会向不同的方向偏离了,并开始分享他们相似的PM组。 因此,它看起来像未来拥有伟大的事情!