十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Visual Basic .NET 具有许多新功能和改进功能(如继承、接口和重载),这使它成为功能强大的面向对象的编程语言。Visual Basic 开发者现在可以使用显式多线程处理创建多线程可伸缩的应用程序。Visual Basic .NET 中其他的新语言功能包括结构化异常处理、自定义属性和符合公共语言规范 (CLS)。
创新互联主营隆阳网站建设的网络公司,主营网站建设方案,成都app软件开发公司,隆阳h5成都微信小程序搭建,隆阳网站营销推广欢迎隆阳等地区企业咨询
CLS 是对诸如数据类型之类的事物以及对象的公开和交互操作方式进行标准化的一组规则。Visual Basic .NET 添加了几项利用 CLS 优势的功能。任何符合 CLS 的语言都可以使用在 Visual Basic .NET 中创建的类、对象和组件。Visual Basic 用户可以从其他符合 CLS 的编程语言访问类、组件和对象,而不用担心诸如数据类型之类的语言特定的差异。Visual Basic .NET 程序使用的 CLS 功能包括程序集、命名空间和属性。
Visual Basic .NET 支持许多新的或改进的面向对象语言功能,如继承、重载、Overrides 关键字、接口、共享成员和构造函数。
还包括结构化异常处理、委托以及几个新的数据类型。
继承
Visual Basic .NET 通过允许定义作为派生类基础的类支持“继承”。派生类继承并可以扩展基类的属性和方法。它们还可以用新实现重写继承方法。默认情况下,用 Visual Basic .NET 创建的所有类都是可继承的。由于设计的窗体实际上是类,因此可以使用继承在现有窗体的基础上定义新窗体。有关详细信息,请参阅继承。
异常处理
Visual Basic .NET 通过使用增强版本的 Try...Catch...Finally 语法支持“结构化异常处理”,诸如 C++ 之类的其他语言也支持该语法。结构化异常处理将现代控件结构(类似于 Select Case 或 While)与异常、受保护的代码块和筛选器结合起来。结构化异常处理使用可靠、综合的错误处理程序使创建和维护程序变得容易。有关详细信息,请参阅异常处理。
重载
“重载”是定义同名但使用不同数据类型的属性、方法或过程的能力。重载过程可以按照需要提供尽可能多的实现处理不同种类的数据,并给出单个通用过程的外观。有关详细信息,请参阅重载属性和方法。
重写属性和方法
Overrides 关键字可使派生对象重写从父级对象继承的特征。重写的成员具有与基类派生的成员相同的参数,但实现不同。成员的新实现可以通过成员名称前加 MyBase 调用父类中的原始实现。有关详细信息,请参阅重写属性和方法。
构造函数和析构函数
“构造函数”是控制类的新实例初始化的过程。反过来,“析构函数”是当类离开范围或设置为 Nothing 时释放系统资源的方法。Visual Basic .NET 通过使用Sub New 和 Sub Finalize 过程支持构造函数和析构函数。有关详细信息,请参阅对象生存期:如何创建和销毁对象。
数据类型
Visual Basic .NET 引入了三种新的数据类型。Char 数据类型是一个无符号的 16 位数量,用来存储 Unicode 字符。它等效于 .NET 框架的 System.Char 数据类型。 Short 数据类型是有符号的 16 位整数,在 Visual Basic 的以前版本中称为 Integer。Decimal 数据类型是 96 位有符号的整数乘以 10 的可变次数幂。在 Visual Basic 的以前版本中仅在 Variant 中可用。有关详细信息,请参阅数据类型。
接口
“接口”描述类的属性和方法,但和类不同,它不提供实现。Interface 语句可以声明接口,而 Implements 语句允许编写代码可以实现接口中描述的项。有关详细信息,请参阅 Visual Basic .NET 中的接口。
委托
“委托”是代表您自己调用对象方法的对象,有时被描述为类型安全、面向对象的函数指针。可以使用委托让过程指定事件处理程序方法在事件发生时运行。也可以与多线程应用程序一起使用委托。有关详细信息,请参阅委托和 AddressOf 运算符。
共享成员
共享成员是由一个类的所有实例共享的属性、过程和字段。当多个对象需要使用公共信息时,共享数据成员很有用。无须首先在类中创建一个对象就可以使用共享类方法。有关详细信息,请参阅共享成员。
引用
“引用”允许使用其他程序集中定义的对象。在 Visual Basic .NET 中,引用指向程序集,而非类型库。有关详细信息,请参阅引用和 Imports 语句。
命名空间
命名空间通过将类、接口和方法组织成层次结构来防止命名冲突。有关详细信息,请参阅命名空间。
程序集
“程序集”通过描述特定组件或应用程序的所有必需文件来替换和扩展类型库的能力。程序集可以包含一个或多个命名空间。有关详细信息,请参阅程序集。
特性
“特性”可以提供有关程序元素的其他信息。例如,当作为 XML Web services 使用类时,可以使用特性指定应公开类中的哪个方法。有关详细信息,请参阅特性。
多线程编程
Visual Basic .NET 允许编写独立执行多任务的应用程序。有可能延迟其他任务的任务可在单独的线程上执行,该过程称为“多线程处理”。通过使复杂任务在独立于用户接口的线程中运行,多线程处理提高了应用程序对用户输入的响应能力。有关详细信息,请参阅多线程应用程序。
前面几个在VB6中就有,这么多概念是有其作用的,当你用得深入之后,就会发现开始的那些简单功能不够用了,这时这些更丰富的功能就可以发挥作用了。
Structure是值类型,classe是引用类型 Structure用栈来分配; classe用堆来分配 structure的成员默认情况下是公共的,而Class的成员变量和常量默认情况下是私有的而其它成员默认情况下是公共的.这与VB6是相兼容的。 structure必须至少有一个非共享的成员变量或事件成员,class可以完全是空的. Structure的成员不能声明成Protected; class成员可以. 一个structure过程只能在它是一个Shared Sub时才能handle events而且只能通过AddHandler语句;而任何class过程都可以handle events,既可以用Handles关键字或 AddHandler语句。 Structure variable declarations cannot specify initializers, the New keyword, or initial sizes for arrays; class variable declarations can. Structure继承自ValueType类,不能从其它任何类型继承; classes可以从任何不是ValueType的类继承 Structure不能继承而Class可以 Structure从来不析构terminated因此common language runtime (CLR)从来不调用它的Finalize方法,classe由垃圾回收器进行析构, 当没有任何对该类的引用时调用它的Finalize方法 structure 不需要一个构造函数,而Class需要 Structure只能有带参数的非共享的构造函数; classes 可以有带或不带参数的构造函数. 每个Structure都有一个默认的不带参数的构造函数以对其成员进行初始化,你可以重新定义该函数
//全局层
VB支持Module 是一种全部成员都是静态的特殊类型
C#支持static class 和VB的Module类似
VB的Imports语句可以把类的静态成员导入 而C#的using语句没有这个功能Imports System Math
VB可以选择变量是否必须声明 以及类型是否必须指定(通过Option语句)C#则默认是VB最严格的状态
C#可以使用extern alias指定程序集的别名 并使用别名限定运算符::来解析类名冲突的两个程序集VB没有这个功能 但可以用Global关键字获得命名空间级别名称冲突解析能力
C#可以指定友元程序集 VB不支持
//成员层
VB可以直接重写Object Finalize方法 而C#必须采用析构函数的语法
C#可以指定attribute的target以便清楚地放置attribute 而VB则通过尖括号的位置来决定 有时候写不出某种C#可行的语法
VB能够重载这些C#不支持的运算符 ^ Like \
C#能够重载这些VB不支持的运算符 ++ !
VB中子类的构造函数 先调用父类的构造函数 然后才初始化子类的字段
C#中子类的构造函数 先初始化子类的字段 然后才调用父类的构造函数
VB的Implemnts语句可以为实现接口的方法改名 改变访问级别
C#不支持但是有一个显式实现的语法可以帮忙
VB的函数重载 子类和父类的方法视为同级C#的函数重载 子类优先于父类
VB的Main函数自动加 可以改
//继续成员层
C#的自定义event可以修改add和remove的规则
VB的自定义Event除了C#的之外 还支持重载RaiseEvent语句的用法
VB的Event可以直接书写Event参数 自动生成Delege类型
C#的event必须指定delegate类型
VB支持WithEvents/Handles静态事件绑定语法 也支持AddHandler动态绑定方法
C#的事件只支持使用+=动态绑定
VB的属性(Property)可以带参数
C#的属性不能带参数
尽管不支持手工定义 VB支持属性按引用传递值 C#不支持
VB可以指定一个带有参数的属性为Default 于是支持索引语法
C#则必须把这个东西声明为索引器 即this语法
VB允许方法带有若干可选参数(Optional)可指定默认值
C#不允许
C#支持out参数 传入前不需要初始化
VB不内置支持
C#支持类中使用fixed buffer 即固定大小的类似数组的成员
VB不支持
C#支持按照参数是否带有ref/out进行函数重载
VB不支持这种重载
C#允许仅大小写区分的两个函数或变量存在
VB不区分大小写 因此也不允许
lishixinzhi/Article/program/net/201311/15509