【问题标题】:What are the differences between VB.NET and previous versions of VB? [closed]VB.NET 和以前的 VB 版本有什么区别? [关闭]
【发布时间】:2023-04-07 11:51:01
【问题描述】:

我相当熟悉 .NET 之前存在的各种形式的 VB(VB6、VBA、VBScript...),但尚未深入研究 VB.NET 的甜蜜新风味。

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

【问题讨论】:

  • 是什么让您提出如此广泛的问题?而且,也回答一下?
  • 回答你自己的问题没有错。实际上是鼓励的。您只是想确定这样做时您有一个很好的答案,并且您希望社区也有机会提供意见。将您的 answer(不是问题)社区 wiki 设为 SO 也是一种很好的礼仪。
  • @sakthivignesh:我认为你写了这样一个模糊的问题然后立即发布了一个非常不充分的答案,这引起了很多批评。将来,您将希望避免这种情况,除非正如 Joel 所指出的,您知道您有一个好的答案。相反,花更多时间写一个好问题......

标签: vb.net vb6 language-features


【解决方案1】:

假设当您说 vb 时,您的意思是 vb 6。 相当大的。最初的 Visual Basic 不使用 .net 运行时环境,尽管它们的名称相似,但它们的语言差别太大了。 Visual Basic 不是完全面向对象的,但 VB.net 是。两者之间的错误处理有很大不同。 VB.Net 有 try catch 块,而传统的 vb 使用 On Error GOTO 语句。这些只是一些差异。名单还在继续。

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

【讨论】:

  • 别忘了昵称“Visual Fred”。
  • 天哪,我完全忘记了这个名字。
  • VB.Net 出于向后兼容的原因仍然支持 On Error GOTO 语句。
  • Joel 的回答更好,VB.NET 仍然是 Visual Basic ;-)
  • 是的,他说得对,它仍然是 vb。我的假设是,当他说 vb vs vb.net 时,他指的是 vb 6,因为这是人们在说 vb 时通常所指的。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

    • 两个都用过,我肯定不同意。
    • 不,不是。虽然两者都是 Basic 方言,但编译器不同,语法也有些相似。
    • VB.Net 是 VB 的一种。当然,它不是唯一的味道,但认为它不是 VB,因为它与您可能使用过的另一种特定的 VB 变体不同,这只是无知。
    • 这是非常正确的。编译器基本相同,为对象继承添加了一些额外的功能,以及已添加的其他功能。语法完全相同,只是添加了一些新关键字来支持新功能。现在 VB.Net 支持的 .Net API 使它成为一种更好的语言,但这并不意味着它不是底层的核心语言。如果您创建一个 VB.Net 控制台应用程序,即使在 VS.Net 2008 中,它仍然会从一个模块开始,就像在旧 VB 中一样,不需要任何类。
    • @svinto:VB6 是 Visual Basic 的一个变体,但它不是 Visual Basic 的全部。您可以将 VB.Net 与 VB6 进行对比。您无法将 VB.Net 与 VB 进行对比,就像您无法将 VB6 与 VB 进行对比一样。
    【解决方案4】:

    VB.Net 是使用 Dot Net 框架/托管代码的较新版本。

    VB是旧版本。

    【讨论】:

      【解决方案5】:

      VB 编译为 p 代码或本地代码,VB.net 编译为 MSIL。语法也有所不同。由于 VB.net 是 VB 用户和程序的升级路径,因此有一堆帮助对象和函数可以更轻松地将代码从 VB 迁移到 VB.net,这些对象和函数通常不会在其他 .网络语言。

      【讨论】:

      • VB5 和 VB6 可以编译为本机机器码。 P 代码在早期版本的 VB 中使用(但仍然是可选的 VB5 和 VB6)。
      【解决方案6】:

      哦,太恐怖了。

      抱歉,所有现有的答案在某种程度上都是错误的。 Joel's 实际上是最好的,但其糟糕的措辞助长了误解(抱歉,Joel - 但看看你的 cmets!):

      无法将 VB.Net 与 VB 进行对比,因为它们是同一回事。

      这就像说“不可能将苹果与水果进行对比,因为它们是同一种东西”,因此不是很有帮助;尤其是因为许多人(仍然)将“VB”用作“VB6”的同义词。

      所以,澄清一下:VB6 和 VB.NET 都是 Visual Basic 语言家族的方言(我们就这么称呼吧)。它们的相似之处充其量只是表面的。实际使用过它们的人(并且不仅查看了一些源代码)会注意到,除了粗略的句法相似性之外,它们是完全不同的野兽。 使用它们是完全不同的体验。

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

      VB6 基本上是为了 RAD 而开发的,仅此而已。在它那个时代,VB6 是 RAD 中最好的东西,而且在很大程度上。另一方面,VB.NET没有被单独用于 RAD 开发——与 C# 一样。两者都是由通用框架支持的高端语言,很像 Java,但希望改进 Java 的一些缺陷,例如通过削减大量样板代码(引入委托、事件、属性、运算符重载、自动装箱等功能)。

      虽然 VB.NET 在很大程度上向后兼容,但这是非常具有误导性的。首先,没有理智的人会说 C 和 C++ 是同一种语言,因为很多 C 程序在 C++ 编译器上编译得很好。从某些指标来看,VB 和 VB.NET 之间的差异甚至更大,因为 no 完整的 VB6 代码是有效的 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 有非常相似的名称(也出于同样的原因:营销) 但这完全是误导。有一些句法相似之处。除此之外,无论从表面上还是在底层,它们是完全不同的语言

      【讨论】:

      • 我会说“它们是完全相似的语言”,其中“相似”等同于“不同”——就像苹果和梨!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2023-03-21
      • 2012-11-25
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多