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

VB.NET与以前版本的VB有什么区别?,vb.net,vb6,language-features,Vb.net,Vb6,Language Features,我对.NET之前存在的各种形式的VB(VB6、VBA、VBScript…)相当熟悉,但还没有深入研究VB.NET的新特点 因此,如果有人能快速总结一下VB.NET给语言带来的主要差异,我将不胜感激。假设你说的VB是指VB6。 相当大。最初的visual basic不使用.net运行时环境,尽管它们有相似的名称,但它们的语言太不同了。Visual Basic不是完全面向对象的,但VB.net是。错误处理在两者之间有很大的不同。Net有try-catch块,传统的VB使用On-Error-GOTO语

我对.NET之前存在的各种形式的VB(VB6、VBA、VBScript…)相当熟悉,但还没有深入研究VB.NET的新特点


因此,如果有人能快速总结一下VB.NET给语言带来的主要差异,我将不胜感激。

假设你说的VB是指VB6。 相当大。最初的visual basic不使用.net运行时环境,尽管它们有相似的名称,但它们的语言太不同了。Visual Basic不是完全面向对象的,但VB.net是。错误处理在两者之间有很大的不同。Net有try-catch块,传统的VB使用On-Error-GOTO语句。这些只是一些不同之处。这一清单不胜枚举


这里有一个描述这个名字的链接。

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

VB.NET只是用于.NET框架的Visual Basic版本。它还对该语言进行了其他更改和添加,但是将VB.Net与VB进行对比是不可能的,因为它们是相同的东西

您可以使用VBA、VB6、VBScript或其他Visual Basic变体与VB.Net进行对比。但是VB.Net仍然是VB的一个可能变体。事实上,如果你看一下产品本身的语言部分,他们现在称最新版本为VB9,而VB10将于今年晚些时候发布

同样,你不能对比“Pespi”和可乐,因为百事可乐是可乐,但你可以对比百事可乐和可乐


这就是说,VB的VB.Net方言给语言带来了大量的变化和改进,包括对面向对象和函数范例的真正支持,以至于惯用的VB.Net代码通常与VB6时代的代码非常不同

VB.Net是一个较新的版本,它使用了Dot-Net框架/托管代码


VB是旧版本。

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

哦,真恐怖

很抱歉,所有现有答案在某些方面都是错误的。Joel's实际上是这群人中最好的一个,但它糟糕的措辞会引起误解(对不起,Joel——但看看你的评论吧!)

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

这就好比说“把苹果和水果做对比是不可能的,因为它们是同一件事”,因此没有多大帮助;特别是因为许多人(仍然)使用“VB”作为“VB6”的同义词

所以,要澄清一点:VB6和VB.NET都是VisualBasic语言家族的方言(我们称之为VisualBasic)。他们的相似性充其量只是表面的;实际使用过这两种语言的人(不仅看了一些源代码)会注意到,除了粗略的语法相似性之外,它们是完全不同的。使用它们是根本不同的体验

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

VB6基本上是为了做RAD而开发的,没有别的。在它的时代,VB6是RAD上最好的东西,在很大程度上。另一方面,VB.NET并没有被单独用于RAD开发,就像C#一样。这两种语言都是由通用框架支持的高端语言,与Java非常相似,但都希望通过剪切大量样板代码(引入委托、事件、属性、运算符重载、自动装箱等功能)来改进Java的一些缺陷,例如过于冗长

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

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

他声称

如果VB.Net是一种新的语言,而不仅仅是一种旧语言的新版本,那么他们就可以摆脱他们没有做到的“错误转到”

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

让我总结一下这篇相当长的文章的要点,这样它就不会丢失:就像Java和JavaScript一样,VB6和VB.NET有着非常相似的名称(并且在很大程度上是相同的)