Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 用VB.NET和C#编写的代码有什么区别?_C# 4.0_Vb.net 2010_Code Analysis - Fatal编程技术网

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

C# 4.0 用VB.NET和C#编写的代码有什么区别?,c#-4.0,vb.net-2010,code-analysis,C# 4.0,Vb.net 2010,Code Analysis,考虑到执行时间、效率等所有因素,有人能告诉我区别吗 哪个是有效的?应该没有,因为它们都编译为同一种语言。最大的可变因素是程序员——他们可能会以更迂回或低效的方式做事(例如,我可以想象,来自VB(a)背景的VB.NET程序员解决问题的方式与来自C(++)背景的C#程序员不同) 如果您想确定,请获取一段代码并检查IL。VB.NET是一种“友好”的编程语言。它支持开箱即用的动态编程,例如,不需要显式地键入变量。数据转换是自动的。默认情况下,溢出检查处于启用状态。通过引用传递属性是有效的。您可以不使用强

考虑到执行时间、效率等所有因素,有人能告诉我区别吗


哪个是有效的?

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

如果您想确定,请获取一段代码并检查IL。

VB.NET是一种“友好”的编程语言。它支持开箱即用的动态编程,例如,不需要显式地键入变量。数据转换是自动的。默认情况下,溢出检查处于启用状态。通过引用传递属性是有效的。您可以不使用强制转换将int赋值给字节。您可以创建多窗口Winforms应用程序,而不必真正理解面向对象编程。编译器自动生成一组代码

这些都不是免费的。在某些情况下,额外的开销可能非常大。简单地添加两个数字可能比需要的花费高出三倍,溢出检查非常简单。在VB.NET程序中,字符串和数字之间的自动转换是一个常见的问题,非常昂贵。仅仅通过查看源代码,您不太可能发现这样的瓶颈


C#更为严格,它(几乎)从不生成隐藏执行成本的代码。因此,编写性能良好的代码会自动变得更容易。否则,这并不能完全避免使用剖析器来识别瓶颈。

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

如果使用Option Explicit On、Option Strict On(Option Strict On启用Option Explicit)和不使用Option Inferre,则将以更复杂的代码为代价获得更好的结果。我所说的复杂意味着你必须正确地转换你的变量和对象,这对于一个基础开发人员来说可能是复杂的

选项信息:

在编写新应用程序时,99.99%的时间不应使用选项推断打开。我会说100%的时间,但有人会有一个合理的理由,我只是想不出任何


选项推断信息:

它的两种不同语言使用相同的框架!为什么要投反对票?我希望这对优秀的思想家和研究人员来说是个好问题。即使是我在采访中也遇到了这个问题。无论如何,我都没有投反对票。。但我同意你的看法,选民应该给出理由!