【发布时间】:2011-01-18 08:23:58
【问题描述】:
VB 和 VB.NET 有什么区别?
最好有例子说明。
【问题讨论】:
-
两者相似度基本为零。
-
有很多相似之处!
标签: .net vb.net visual-studio-2008 programming-languages vb6
VB 和 VB.NET 有什么区别?
最好有例子说明。
【问题讨论】:
标签: .net vb.net visual-studio-2008 programming-languages vb6
有很多不同。
其他一些区别:
VB.Net 通过允许您定义作为派生类基础的类来支持继承。派生类继承并可以扩展基类的属性和方法。他们还可以使用基类的新实现来覆盖继承的方法。默认情况下,使用 VB.Net 创建的所有类都是可继承的。因为您设计的表单实际上是类,所以您可以使用继承在现有表单的基础上定义新表单。详情请见Inheritance in Visual Basic。
VB.Net 支持结构化异常处理,使用其他语言(如 C++)支持的 Try...Catch...Finally 语法的增强版本。结构化异常处理将现代控制结构(类似于 Select Case 或 While)与异常、受保护的代码块和过滤器相结合。结构化异常处理使创建和维护具有强大、全面的错误处理程序的程序变得容易。详情请见Introduction to Exception Handling。
重载是定义具有相同名称但使用不同数据类型的属性、方法、过程或运算符的能力。您可以使用重载过程来提供处理不同类型数据所需的尽可能多的实现,同时呈现出单一的多功能过程的外观。详情请见Overloaded Properties and Methods。
Overrides 关键字允许派生对象覆盖从父对象继承的特征。重写的成员与从基类继承的成员具有相同的参数,但它们具有不同的实现。成员的新实现可以通过在成员名称前加上 MyBase 来调用父类中的原始实现。详情请见Overriding Properties and Methods。
构造函数是控制类的新实例初始化的过程。相反,析构函数是在类离开作用域或设置为 Nothing 时释放系统资源的方法。 VB.Net 支持使用 Sub New 和 Sub Finalize 过程的构造函数和析构函数。详情请见Object Lifetime: How Objects Are Created and Destroyed。
VB.Net 引入了三种新的数据类型。 Char 数据类型是一个无符号的 16 位量,用于存储 Unicode 字符。它等效于 .NET Framework System.Char 数据类型。 Short 数据类型是带符号的 16 位整数,在早期版本的 Visual Basic 中被命名为 Integer。 Decimal 数据类型是一个 96 位有符号整数,按 10 的可变幂进行缩放。在早期版本的 Visual Basic 中,它仅在 Variant 中可用。此外,Visual Basic 现在支持无符号整数数据类型(UShort、UInteger 和 ULong)以及有符号类型 SByte。详情请见Data Types in Visual Basic。
接口描述类的属性和方法,但与类不同,接口不提供实现。使用Interface语句声明接口;使用 Implements 语句编写代码,将接口中描述的项目付诸实践。详情请见Interfaces in Visual Basic。
委托是可以代表您调用对象方法的对象,有时被描述为类型安全、面向对象的函数指针。您可以使用委托让过程指定在事件发生时运行的事件处理程序方法。您还可以在多线程应用程序中使用委托。详情请见Delegates and the AddressOf Operator。
共享成员是类的所有实例共享的属性、过程和字段。当多个对象需要使用所有对象共有的信息时,共享数据成员很有用。您可以使用共享类方法,而无需先从类中创建对象。详情请见Shared Members in Visual Basic。 参考文献
您可以使用引用来使用在其他程序集中定义的对象。在 VB.Net 中,引用指向程序集而不是类型库。详情请见References and the Imports Statement。
命名空间通过将类、接口和方法组织成层次结构来防止命名冲突。详情请见Namespaces in Visual Basic。
程序集通过描述特定组件或应用程序所需的所有文件来替换和扩展类型库的功能。一个程序集可以包含一个或多个命名空间。详情请见Assemblies。
您可以使用属性来提供有关程序元素的附加信息。例如,您可以使用一个属性来指定当该类用作 XML Web 服务时应该公开该类中的哪些方法。详情请见Attributes in Visual Basic。
您可以使用 VB.Net 编写可以独立执行多个任务的应用程序。可以阻止其他任务的任务可以在单独的线程上执行,这个过程称为多线程。通过使复杂的任务在与用户界面分离的线程上运行,多线程使您的应用程序对用户输入的响应更快。详情请见Multithreaded Applications。
VB.Net 现在支持整数数据类型(Byte、Short、Integer 和 Long)以及无符号类型(UShort、UInteger 和 ULong)的算术左移和右移操作。算术移位不是循环的,这意味着从结果的一端移出的位不会在另一端重新引入。还提供了相应的赋值运算符。详情请见Bit Shift Operators and Assignment Operators。
您可以使用 VB.Net 将循环变量声明为 For 或 For Each 循环的一部分。您可以在 For 或 For Each 语句中为变量包含 As 子句,前提是在循环外没有声明该名称的变量。以这种方式声明的循环变量的范围是循环本身。详情请见For...Next Statement (Visual Basic)和For Each...Next Statement (Visual Basic)。
更多信息:
编辑:正如所评论的,VB6 已经支持构造函数等一些功能(以不同的方式),请查看最后一个链接,其中更多考虑了这一点
【讨论】:
eval 函数。 4. VB6 是类型安全的语言,它只是弱类型(如C),它本身并不是一个“弱点”。有一件事是肯定的——微软在妖魔化 VB6 方面做得很好,吓坏了大多数 VB6 开发人员(数百万),后来又将他们困在 .Net 中。有一件事我也很确定——这将再次发生......使用 .Net。
如果您正在为一个新项目做出选择,那么相关要点是:
我想说选择 VB.OLD 而不是 VB.NET 的理由很少(如果有的话!)。
如果您“只是感兴趣”,那么关于每种语言的 Wikipedia 文章会提供相当丰富的信息,但简而言之,它们是完全不同的语言,具有表面上相似的语法。 VB 有自己的运行时,其中 VB.NET 是使用更现代的 .NET Framework 的众多语言之一。
【讨论】:
经典 VB 不支持大多数 OOP 功能,而 VB.NET 支持。
【讨论】:
主要区别在于版本号和面向对象。
直到版本 6,它被称为 VB。从与 .Net 1.0 一起发布的版本 7 开始,它被称为 VB.NET。
在第 7 版中对其进行了彻底的改进,使其与 .Net Framework(CLI 和 CLS 兼容)以及 C# 和 Java 等其他语言更加精简。
在此过渡中,一些更改导致与以前版本的向后兼容性中断。这就是为什么微软在 Visual Studio 中提供了一些工具来将旧的 VB6 应用程序转换为 .Net。
【讨论】: