对我来说,为Java生态系统开发支付了多年的账单。但是,几年来,我一直主要在.Net领域工作。最初,我转换到.Net世界包括编写和维护VB.Net代码。在提供了多年的Eclipse / Java组合工作之后,VS提供了我所期望的几乎所有优秀的intellisense支持。最终,我的雇主决定用C#进行新的开发。我对c#的intellisense支持的最初印象不是很好。有时似乎VS没有C#的后台编译器,但偶尔它会做一些聪明的事情,表明那里有一些后台处理,但还不足以真正以有意义的方式提高生产力。关于两种语言之间智能感知支持的这种差异,是否有任何明智的技术原因?
答案 0 :(得分:14)
现在,C#和VB之间存在一段距离。 VB为您生成了很多代码。例如,在完成“If”语句后按Enter键将自动在该行的末尾添加“Then”(如果您将其关闭),并使用“End If”部分将其关闭。在C#中,您可以添加那些开始和结束{}花括号。
VB在C#之前很久就进行了后台编译。事实上,这是使用ReSharper的主要吸引力因素之一,它提供了这样的功能。但是,从VS 2008 / .NET 3.5 SP1开始,这一切都发生了变化。你可以阅读Scott Gu关于here的帖子,但我会粘贴相关部分:
“C#代码编辑器现在识别和 显示许多红色波浪错误 之前的语义代码问题 需要一个明确的编译 鉴别。例如,如果您尝试 声明并使用未知类型 C#代码编辑器今天你不会看到 编译错误,直到您进行构建。 现在有了SP1,你会看到活红色 立即曲线错误(没有 需要显式编译)。“
使用CodeRush或ReSharper肯定会增强常见语句自动完成的体验,这会使VB开发人员觉得无缝过渡。
这并不能解决技术问题,但开发团队不同,并不一定会做同样的事情。换句话说,不太可能采用共享方法。由VB团队的技术主管提供的This blog post摘录支持:
“后台编译”是 VB中的功能给你一个 键入时出现完整的错误集。 在两者之间来回移动的人 VB和C#注意到这一点,但仅限VB 开发人员可能没有意识到其他 像C#这样的语言并不总是给出 你100%准确的智能感知和 不要总是给你所有的 代码中存在的错误。这个 是因为他们的Intellisense引擎 是单独的,按比例缩小的编译器 那个不做完全编译的 背景。另一方面,VB 从中编译整个项目 开始完成Visual Studio所在 闲着,让我们立刻 完全填充任务列表 准确的错误并允许我们 给你完全准确 智能感知。
最后一个注意事项是recent Channel9 interview与C#/ VB / F#团队的团队PM,Luca Bolognese,他在那里强调语言不再会偏向不同的方向,并将开始分享他们的相似之处。所以看起来未来会有很棒的东西!