当然,一般语法有所不同,但存在哪些其他重要区别?有一些的差异,对吧?
答案 0 :(得分:32)
链接的比较非常彻底,但就主要差异而言,我会注意以下几点:
一般而言,MS关注的内容各不相同,因为这两种语言针对的是非常不同的受众。 This blog post对目标受众有一个很好的总结。确定您所在的受众群体可能是一个好主意,因为它将决定您从Microsoft获得哪种工具。
答案 1 :(得分:9)
自.Net 2.0发布以来,这个主题已经有了很多时间。有关可读摘要,请参阅此Wikipedia文章。
答案 2 :(得分:5)
这可能被认为是语法,但VB.NET是 敏感的情况,而C#是敏感的。
答案 3 :(得分:3)
This是一个非常全面的参考。
答案 4 :(得分:2)
由于我认为你可以谷歌,我不认为你想要的更多网站的链接。
我的回答:根据开发人员的历史记录选择。 C#更像JAVA,可能是C ++之类的。 VB.NET对于VB程序员来说更容易,但我想这不再是一个问题,因为没有新的.NET程序员来自旧VB。
我的观点是VB比C#更有效率,似乎它在生产力工具(例如智能感知)方面总是领先,并且我会向那些要求的人推荐vb over c#。当然,知道他更喜欢c#的人不会问,而c#可能是他的正确选择。
答案 5 :(得分:2)
虽然C#3上的语法糖确实推动了前进,但我必须说VB.Net中的一些Linq to XML内容看起来相当不错,并且使处理复杂,深度嵌套的XML更容易受理。只是一点点。
答案 6 :(得分:2)
一个明显的区别在于它们如何处理扩展方法(Vb.Net实际上允许C#没有的东西 - 传递扩展方法被定义为ref的类型):http://blog.gadodia.net/extension-methods-in-vbnet-and-c/
答案 7 :(得分:1)
除了语法不再那么多。它们都编译为完全相同的IL,因此您可以将某些内容编译为VB并将其反映到C#中。
大多数明显的差异是语法糖。例如,VB似乎支持动态类型,但实际上它们和C#一样静态 - VB编译器将它们计算出来。
Visual Studio与VB的行为不同于C# - 它隐藏了许多功能,但增加了后台编译(适用于小型项目,大型资源占用资源)以及更好的代码段支持。
随着越来越多的编译器'魔术'在C#3中,VB.Net真的落后了。 VB现在唯一拥有C#的不是handles
关键字 - 这是值得商榷的好处。
@Tom - 非常有用,但有点过时 - VB.Net现在也支持带有'''
@Luke - VB.Net仍然没有anon-methods,但现在支持lambdas。
答案 8 :(得分:1)
我认为最大的不同是能够用C#编写不安全的代码。
答案 9 :(得分:1)
虽然VB.NET支持try ... catch类型的异常处理,但它仍然有类似于VB6的ON ERROR。 ON ERROR可以被严重滥用,在绝大多数情况下,尝试......捕获更好;但是当处理COM超时操作时,ON ERROR可能很有用,其中错误可以被捕获,解码,最后“再试一次”是一个简单的行。 你可以尝试使用try ... catch但代码却很麻烦。
答案 10 :(得分:1)
在wikipedia和harding上简要介绍了这个主题。
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
请仔细阅读并做好记录。
答案 11 :(得分:0)
当它到达IL时它只是位。不区分大小写只是一个预编译器传递。 但普遍的共识是,vb更加冗长。 如果你能写c#为什么不保存你的眼睛和手,写下少量的代码来做同样的事情。
答案 12 :(得分:0)
一个明显的区别在于它们如何处理扩展方法(Vb.Net实际上允许C#没有的东西 - 传递扩展方法被定义为ref的类型):http://blog.gadodia.net/extension-methods-in-vbnet-and-c/
答案 13 :(得分:0)
Scott Hanselman最近写了一篇有趣的文章,对比var和Dim:Back to Basics: var != Dim
答案 14 :(得分:0)
是的VB.NET解决了大部分VB6问题并使其成为一种合适的OOP语言 - 即。类似于C#的能力。 AlthougnI倾向于选择C#,我确实发现旧的VB ON ERROR结构对于处理COM互操作超时非常有用。明智地使用的东西 - ON ERROR很容易被滥用!!