用VB.NET编写的代码和C#有什么区别?

时间:2014-02-20 11:26:06

标签: c#-4.0 vb.net-2010 code-analysis

任何人都可以通过考虑执行时间,效率等等所有因素来告诉我差异

哪个有效?

3 个答案:

答案 0 :(得分:3)

VB.NET是一种“友好”的编程语言。它支持开箱即用的动态编程,例如,无需显式键入变量。数据转换是自动的。默认情况下启用溢出检查。通过引用传递属性只是起作用。您可以在没有强制转换的情况下为一个字节分配int。您可以创建一个多窗口Winforms应用程序,而无需真正理解面向对象的编程。编译器会自动生成一堆代码。

这些都不是免费的。在某些情况下,额外的开销可能非常大。简单地添加两个数字可能比需要的价格贵三倍,溢出检查就是漂亮的鹿。字符串和数字之间的自动转换是VB.NET程序中的常见瑕疵,非常昂贵。只要查看源代码,您就没有机会识别出这样的瓶颈。

C#更加严格,它(几乎)从不生成隐藏执行成本的代码。因此,它使编写高性能代码变得更加容易。否则,这完全不需要使用分析器来识别瓶颈。

答案 1 :(得分:1)

我想扩展到目前为止给出的两个答案。他们都是正确的。 VB.NET的问题通常是开发人员的思维方式和VB.NET语言的灵活性。

如果使用Option Explicit On,Option Strict On(Option Strict On启用Option Explicit)并且不使用Option Infer,您将获得更好的结果,代价是更复杂的代码。复杂的意思是你必须正确地转换你的变量和对象,这对于BASIC开发人员来说可能被认为很复杂。

选项严格信息:http://support.microsoft.com/kb/311329

选项推断On,在编写新应用程序时不应使用99.99%的时间。我会说100%的时间,但有人会有正当的理由,我想不出任何。

选项推断信息:http://msdn.microsoft.com/en-us/library/bb384665.aspx

答案 2 :(得分:0)

应该没有,因为它们都编译成相同的语言。最大的变量因素是程序员 - 他们可能以更迂回或低效的方式做事(例如,我可以想象来自VB(A)背景的VB.NET程序员倾向于解决与来自a的C#程序员不同的问题C(++)背景)。

如果你想确定,请拿一段代码检查IL。