What are the most important functional differences between C# and VB.NET?当然,通用语法有所不同,但是还有哪些其他关键区别呢? 有一些区别吧? 链接的比较非常彻底,但是就主要区别而言,我会注意以下几点:
通常,MS针对每种事物关注的事物各不相同,因为这两种语言针对的受众非常不同。这篇博客文章对目标受众进行了很好的总结。确定您所在的受众群体可能是一个好主意,因为它将确定您将从Microsoft获得什么样的工具。 自.Net 2.0发布以来,这个主题已经有很多面子了。请参阅此Wikipedia文章以获取可读的摘要。 可以将其视为语法,但是VB.NET不区分大小写,而C#区分大小写。 这是一个非常全面的参考。 一个明显的区别是它们如何处理扩展方法(Vb.Net实际上允许C#不允许的某些东西-将扩展方法定义为ref的类型传递给它):http://blog.gadodia.net/extension- vbnet和-c中的方法 尽管C#3上的语法糖确实推动了这一标准的发展,但我必须说VB.Net中的Linq to XML东西看起来相当不错,并且使得处理复杂的深层嵌套XML的容忍度更高。一点点。 由于我假设您可以使用google,因此我不认为您正在寻找指向更多网站的链接。
我的答案:根据开发人员的历史选择。 C#更像是JAVA,甚至可能像C ++。 我的观点是,VB比C#更具生产力,在生产力工具(例如intelisense)方面,它始终处于领先地位,我会向提出要求的人推荐vb而不是C#。当然,知道他更喜欢c#的人不会问,而c#可能是他的正确选择。 在Wikipedia和Harding上简要描述了此主题。
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET 只需仔细做一下就可以了。
尽管VB.NET支持try ... catch类型异常处理,但它仍然具有类似于VB6的ON ERROR的功能。错误可能会被严重滥用,在大多数情况下,try ... catch会更好。但是,在处理COM超时操作时,ON ERROR很有用,在该操作中可以捕获,解码错误,最后的"再试一次"很简单。 我认为最大的不同是使用C#编写不安全代码的能力。 除了语法之外,没有更多的东西了。它们都编译为完全相同的IL,因此您可以将某些内容编译为VB并将其反映到C#中。 最明显的区别是语法糖。例如,VB似乎支持动态类型,但实际上它们和C#一样是静态的-VB编译器可以找出它们。 Visual Studio在VB上的行为不同于在C#上的行为-它隐藏了许多功能,但增加了后台编译(对于小型项目来说是巨大的,对于大型项目来说是很大的资源)和更好的代码片段支持。
随着C#3中越来越多的编译器"神奇",VB.Net确实落后了。 VB现在唯一没有C#的东西就是
@Tom-确实有用,但有些过时了-VB.Net现在也通过 @Luke-VB.Net仍然没有匿名方法,但现在支持lambda。 是的,VB.NET解决了大多数VB6问题,并使其成为一种适当的OOP语言-即。与C#的功能相似。我倾向于使用C#,但我确实发现旧的VB ON ERROR构造对于处理COM互操作超时很有用。明智地使用一些东西-ON ERROR很容易被滥用! Scott Hanselman最近写了一篇有趣的文章,对比了var和Dim:回到基础:var!= Dim 一个明显的区别是它们如何处理扩展方法(Vb.Net实际上允许C#不允许的某些东西-将扩展方法定义为ref的类型传递给它):http://blog.gadodia.net/extension- vbnet和-c中的方法
当达到IL时,它只是全部位。这种不区分大小写只是预编译器通过。 |