VB.NET和以前版本的VB有什么区别?

时间:2009-09-01 16:44:51

标签: vb.net vb6 language-features

我非常熟悉.NET之前存在的各种形式的VB(VB6,VBA,VBScript ......),但还没有深入研究VB.NET的Sweet Sweet Flavor。

所以如果有人能够快速总结一下VB.NET带来的语言差异,我将非常感激。

6 个答案:

答案 0 :(得分:10)

假设你说vb你的意思是vb 6。 相当大的。原始的visual basic不使用.net运行时环境,虽然它们有相似的名称,但它们的语言却差别太大。 Visual Basic不是完全面向对象的,但是VB.net是。错误处理在两者之间有很大不同。 VB.Net尝试使用catch块,传统的vb使用On Error GOTO语句。这些只是一些差异。这个清单一直在继续。

以下是描述"Visual Fred"名称的链接。

答案 1 :(得分:7)

哦,恐怖。

很抱歉,但所有现有答案在某种程度上都是错误的。乔尔实际上是最好的,但其糟糕的措辞鼓励误解(对不起,乔尔 - 但只看你的评论!):

  

将VB.Net与VB进行对比是不可能的,因为它们是相同的。

这就像说“苹果与水果形成对比是不可能的,因为它们是同一个东西”,因此不是很有帮助;特别是因为很多人(仍然)使用“VB”与“VB6”同义。

所以,要清楚一点:VB6和VB.NET都是 Visual Basic语言系列的方言(让我们称之为)。他们的相似之处至多是肤浅的;实际上已经使用两者(并且不仅仅看了一些源代码)的人会注意到,除了粗略的句法相似性之外,它们是完全不同的野兽。 使用它们是根本不同的体验。

它们实际上彼此相似的唯一方面(除了所述语法相似性)是它们都非常适合快速应用程序开发(RAD)......至少在你尝试过动态语言(如Python或Ruby)之前与诸如Shoes之类的GUI敏捷框架相结合。但即使在RAD环境中,也存在巨大差异。

VB6基本上是开发给 RAD,没有别的。在它的时代,VB6是标记做RAD的最好的东西,大幅度。另一方面,VB.NET被单独用于RAD开发 - 不仅仅是C#。两者都是由通用框架支持的高端语言,非常像Java,但希望改进Java的一些错误,例如通过削减大量样板代码来过度冗长(引入代理,事件,属性,运算符重载,自动装箱以命名但只有一些这样的功能。)

虽然VB.NET在很大程度上向后兼容,但这是非常误导的。首先,没有理智的人会说C和C ++是相同的语言只是因为很多C程序在C ++编译器上编译得很好。由于 no 完整的VB6代码是有效的VB.NET,VB和VB.NET之间的差异甚至更大。它需要一个自动的“升级助手”来生成有效的.NET代码,而且经验表明这个升级助手即使对于中型项目也是不合适的,主要是因为它的字面翻译打破了.NET世界的许多指导和假设。

和Kibbee一样,说VB6和VB.NET的编译器“基本相同”是错误的。同样,声称“.Net运行时不是对语言的改变”完全忽略了这一点。 当然这是语言的变化。 VB.NET完全围绕.NET框架构建,它不仅仅是任何其他库。

他声称

  

如果VB.Net本来是一种新语言,而不仅仅是旧语言的新版本,那么他们就可以摆脱“On Error Goto”,但他们没有。

- 这同样具有误导性。 “On Error Goto”仅用于向后兼容(升级助手无法将旧式错误处理转换为基于异常的错误处理)。

让我总结一下这个相当长的帖子的主要内容,这样就不会丢失:就像Java和JavaScript一样,VB6和VB.NET的名称非常相似(同样的原因也是如此:营销)但这完全是误导。有一些句法上的相似之处。除此之外,表面上和幕后,他们是完全不同的语言

答案 2 :(得分:5)

VB.Net只是旨在与.Net框架一起使用的Visual Basic版本。它还对语言进行了其他更改和添加,但VB.Net与VB的对比是不可能的,因为它们是相同的。

您可以做的是与VB.Net对比VBA,VB6,或VBScript,或Visual Basic的其他变体。但VB.Net仍然是 IS VB的一种可能变体。事实上,如果您单独查看产品的语言部分,他们现在正在调用最新版本的VB9,VB10将在今年晚些时候推出。

以同样的方式,你无法对比“Pespi”和可乐,因为百事可乐是可乐,但你可以对比百事可乐和可口可乐。

也就是说,VB的VB.Net方言带来了大量的语言变化和改进,包括对面向对象和功能范例的真正支持,以至于习惯性的VB.Net代码通常与VB6非常不同 - 代码。

答案 3 :(得分:2)

有很多 - 我认为列出的太多了。您几乎可以认为VB.Net是一种完全不同的语言,它与VB共享一些类似的语法。最大的变化是熟悉.NET类。

答案 4 :(得分:1)

VB.Net是一个使用Dot Net Framework /托管代码的新版本。

VB是旧版本。

答案 5 :(得分:1)

VB编译为p代码或本机代码,VB.net编译为MSIL。语法也有所不同。由于VB.net是VB用户和程序的升级路径,因此有许多辅助对象和函数可以使代码从VB移动到VB.net更容易,这些对象和函数通常不会用于其他编写的程序中。网络语言。