与VB.NET相比,为什么IntelliSense不支持C#?

时间:2009-07-04 04:16:45

标签: vb.net visual-studio intellisense

对我来说,为Java生态系统开发支付了多年的账单。但是,几年来,我一直主要在.Net领域工作。最初,我转换到.Net世界包括编写和维护VB.Net代码。在提供了多年的Eclipse / Java组合工作之后,VS提供了我所期望的几乎所有优秀的intellisense支持。最终,我的雇主决定用C#进行新的开发。我对c#的intellisense支持的最初印象不是很好。有时似乎VS没有C#的后台编译器,但偶尔它会做一些聪明的事情,表明那里有一些后台处理,但还不足以真正以有意义的方式提高生产力。关于两种语言之间智能感知支持的这种差异,是否有任何明智的技术原因?

1 个答案:

答案 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,他在那里强调语言不再会偏向不同的方向,并将开始分享他们的相似之处。所以看起来未来会有很棒的东西!