
正文
vb.net多态 vba 多态
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb和vb.net的区别
VB.NET和VB6.0有什么区别
Visual Basic .NET是Microsoft Visual Studio .NET套件中主要组成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化为完全面向对象(就像C++)的编程语言。本文将介绍VB.NET的新特性,并比较VB6.0/VB.NET之间的区别,阐述如何利用VB.NET编写简单的应用程序。
1.1 什么是 VB.NET? Microsoft推出全新的编程和操作系统Framework——.NET,支持多种语言利用公共.NET库开发应用程序,这些应用程序在.NET Framework上运行。使用Visual Basic在.NET Framework上编程,这就是VB.NET。
首先,让我演示在VB.NET中写最简单的控制台程序:Hello World。
1.2 Hello, World!“Hello World!”是初学者学习Windows编程的代表性程序。我们的第一个程序就叫做“Hello VB.NET World!”。该程序在控制台输出一句话:“Hello VB.NET World!”,代码如下所示:
代码 1.1: Hello VB.NET World例子Imports System
Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End Sub
End Module
1.3 VB.NET 编辑器和编译器你可以在记事本或VS.NET IDE等任意文本编辑器中撰写上述代码,然后保存为HelloWorld.vb。 代码编写完成之后,要么在命令行、要么在VS.NET IDE中编译它。在Microsoft .NET Framework SDK中已经包括VB.NET编译器vbc.exe[][1],从IDE或是命令行都可以调用。要从命令行编译HelloWorld.vb,请在命令行窗口输入
vbc HelloWorld.vb /out:HelloWorld.exe /t:exe
编译结束后,HelloWorld.exe被创建到当前目录下。在资源管理其中双击图标或在命令行执行,程序正确地运行了。祝贺你进入VB.NET开发者的行列。
Imports 语句
如你所知,大部分的.NET类型都在名字空间(namespace)中定义。Namespace是定义和管理类别的范畴。察看.NET Framework Class Library,可以看到数以百计的namespace。例如,System namespace就包括了Console、Object等类型定义。如果想使用Console类,需要用Imports指令导入System namespace。如下所示:
Imports System甚至可以明确地调用namespace而无需用Import导入。下面的例子展示了不用Import的“Hello World!”程序:
代码1.2: Hello VB.NET World例子Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End SubEnd Module1.4 解析 "Hello VB.NET World!"程序第一行是:
Imports System; System namespace定义了Console类,该类用于读写控制台(命令行窗口)。然后你定义了一个module:Module Module1
…End Module所有的VB程序都包括一个Main()方法,即应用程序入口点。在例子程序中,我们调用Console.WriteLine()向控制台写入“Hello VB.NET World!”:
Sub Main()
Console.WriteLine(“Hello VB.NET World!”) End SubWriteLine()方法归属于Console类,它负责向控制台写一个带有行结束符的字符串。如前所述,Console类定义于System namespace,你通过直接引用来控制类成员。
Console类负责读写系统控制台。读控制台输入用Read和ReadLine方法,向控制台输出用WriteLine方法。
表1.1 Console类定义的方法
方法 用途 例子
Read 读入单个字符 int i = Console.Read();
ReadLine 读入一行 string str = Console.ReadLine();
Write 写一行 Console.Write("Write: 1");
WriteLine 写一行,并带上行结束符
Console.WriteLine("Test Output Data with Line");
1.5 VB.NET有什么新特点? VB.NET比 VB6.0更加稳定,而且完全面向对象。也许你还记得,VB6.0不支持继承、重载和接口,所以不是真正面向对象的。而VB.NET则支持这些面向对象特性。VB6.0有两个薄弱环节——多线程和异常处理。在VB.NET中,开发多线程应用和使用C++/C#别无二致,结构化异常处理也得到支持。稍后我们会详细解释这些特性。
下面是VB.NET的特性列表——
·面向对象的编程语言。支持继承、重载、接口、共享成员和构造器。·支持所有的CLS特性,如存取控制.NET类、与其它.NET语言交互、元数据、公共数据类型、委托等等。·多线程支持。·结构化异常处理。 1.6 名字空间与集合 前面讨论了我们的第一个VB.NET程序。该程序中首先引人注意的是名字空间(namespace)。在.NET参考文档中,你会发现每个类都归属于某个namespace。那么,namespace到底是什么?
一个namespace是类和组件的逻辑组合,其目的在于将.NET class按类别定义。微软借用了C++ class packaging概念:namespace来描述这种组合。.NET Framework中的组件被称为集合(assembly)。全部.NET代码在数百个库文件(DLL)中定义。Namespace把assembly中定义的类组织起来。一个namespace可以包括多个assembly,一个assembly也可以在多个namespace中定义。 namespace树的根节点是System namespace。在.NET Library中,每个class都在一组相似的类别中定义。例如,System.Data namespace只包括数据相关类。同样,System.Multithreading只包括多线程类。
在使用.NET支持的语言(如C#、VB.NET、C++.NET等)创建新应用程序时,你会注意到每个应用程序都被定义为一个namespace,而所有的class都归属于这个namespace。通过引用这个namespace,其它应用程序就能存取这些class。 在.NET中,代码被编译为中间语言(Intermediate Language,IL),assembly中存储了IL代码、元数据和其它资源文件。同一个assembly可以附属于一个或多个Exe/DLL。所有的.NET库都存储在assembly中。
1.7 VB.NET: 完全面向对象的编程语言抽象、封装、多态、继承是面向对象语言的四个基本属性。VB6.0不支持继承,而VB.NET则不然。所以,和C++一样,VB.NET也是完全面向对象的编程语言。
Class 和 ModuleVB.NET用Class...End Class语句对创建class。每个VB.NET至少包括一个Module(模块)。Module在Module…End Module语句对中实现。应用程序的主要模块是Main方法,亦即应用程序入口点。
和VB6.0相似的地方是,都可以使用Function/Sub关键字定义方法。下面的例子显示了如何创建class、添加方法,并从主程序调用方法: Imports System
Module Module1
Sub Main()
Dim cls As TestClass = New TestClass
Console.WriteLine(cls.MyMethod)
End Sub
Class TestClass
Function MyMethod() As String
Return "Test Method"
End Function
End Class
End ModuleProperty属性(Property)是类变量的公共描述。Property…End Property语句用以创建property。属性的Get/Set方法分别用于取得和设置属性值。下面的例子中,Data是TestClass的属性。
Imports System
Imports System.Console
Module Module1
Sub Main()
Dim cls As TestClass = New TestClass
WriteLine(cls.MyMethod)
WriteLine(cls.Data)
cls.Data = "New Data"
WriteLine(cls.Data)
End Sub
End Module
Class TestClass
Private strData As String = "Some Data"
Function MyMethod() As String
Return "Test Method!"
End Function
' Adding Data property to the class
Public Property Data() As String
Get
Return strData
End Get
Set(ByVal Value As String)
strData = Value
End Set
End Property
重载VB.NET通过overload关键字支持方法重载。使用这个关键字,你可以定义同名但不同参数的方法。
类成员访问域
除了原有的Private和Public,VB.NET引入了几个新关键字。全部访问域关键字列表如下:
关键字 作用域
Private 限于class内部
Public 可以从class外访问
Friend 限于class所属的应用程序内
Protected 只能被class和其派生类访问
Protected Friend 能被class、应用程序和派生类访问
继承继承是面向对象编程语言中最常用的技术。继承让你能够重用类代码和功能。
VB.NET支持继承,而VB6.0则不支持。继承的好处在于你能使用任何人编写的类,从这些类派生自己的类,然后在自己的类中调用父类功能。在下面的例子中,Class B派生自Class A,我们将从Class B中调用Class A的方法MethodA。
Imports System
Imports System.Console
Module Module1
Sub Main()
Dim bObj As B = New B
WriteLine(bObj.MethodA())
End Sub
End Module
' Class A defined
Public Class A
Function MethodA() As String
Return "Method A is called."
End Function
End Class
'Class B, inherited from Class A. All members (Public and Protected)
' can be access via B now.
Public Class B
Inherits A
Function MethodB() As String
Return "Method B is called."
End Function
End Class
可以从一个class中派生多个自定义class,也可以从多个class派生一个自定义class。
共享的成员类的共享成员被类的所有实体共享。共享成员可能是属性、方法或字段/值域。在你不想让用户全面控制自己的类时,共享成员相当有用。例如,你可以开发一个类库,让用户通过共享成员使用其中的部分功能。
可以通过class本身引用共享成员,而无需通过类的实体。例如:Module Module1
Sub Main()
WriteLine(A.MethodA())
End Sub
End Module
' Class A defined
Public Class A
Shared Function MethodA() As String
Return "Method A is called."
End Function
End Class
多线程VB语言的一大弱点就是缺乏编写自由线程(free-threaded)程序的能力。在.NET Framework中,所有语言共享CRL(Common Runtime Library,公共运行库),也就是说,你可以用VB.NET、C#或其它.NET语言编写同样的程序。
System.Threading namespace定义了线程类。我们只需要引入System.Threading namespace,即可使用线程类。
System.Threading.Thread类提供线程对象,可以使用Thread类创建或破坏线程。
创建线程使用Thread类的实体创建一个新线程,然后用Thread.Start方法开始执行线程。线程构造器接受一个参数,该参数指明你要在线程中执行的procedure。在下例中,我想在oThread1(Thread类的一个实体)的第二线程中执行SecondThread过程:
oThread1 = New Thread(AddressOf SecondThread)
SecondThread procedure looks like below:
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
End Sub
然后,调用Thread.Start()开始线程:
oThread1.Start()
下面的代码创建两个第二线程:
Imports System
Imports System.Threading
Module Module1
Public oThread1 As Thread
Public oThread2 As Thread
Sub Main()
oThread1 = New Thread(AddressOf SecondThread)
oThread2 = New Thread(AddressOf ThirdThread)
oThread1.Start()
oThread2.Start()
End Sub
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
End Sub
Public Sub ThirdThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine("A" + i.ToString())
Next
End Sub
End Module
破坏线程 调用Abort方法来破坏(中止)一个线程。在调用Abort之前,确保用IsAlive判断线程处于活动状态。
If oThread1.IsAlive Then
oThread1.Abort()
End If
暂停线程可以使用Sleep方法来暂停线程执行。Sleep方法接受一个以毫秒为单位的参数,指明线程应当暂停多长时间。
下面的例子让线程暂停1秒钟:
oThread2.Sleep(1000)你也可以使用Suspend和Resume方法来挂起和继续线程执行。
设定线程优先级Thread类的Priority属性用于设定线程优先级。该属性可以设置为Normal,AboveNormal,BelowNormal,Highest和Lowest。如:
oThread2.Priority = ThreadPriority.Highest线程与Apartment使用ApartmentState属性设置线程的apartment类型,该属性值可以为STA,MTA或是Unknown[][2]:
oThread.ApartmentState = ApartmentState.MTAMTS意味着可以使用多线程模式,而STA则只能是单线程执行。
Public Enum ApartmentState
{
STA = 0,
MTA = 1,
Unknown = 2,
}
1.8 结构化异常处理异常处理也被称之为错误处理。作为VB程序员,你一定对On Error Goto和On Error Resume Next这些VB6.0错误处理语句耳熟能详。这种类型的错误处理被称为非结构化异常处理(Unstructured Exception Handling)。而在VB.NET中,Microsoft推出了结构化异常处理机制。VB.NET支持类似C++的TryCatch..Finally控制。Try..Catch..Finally结构如下: Try
' 可能导致异常的代码
Catch
' 当异常发生时处理异常的代码
Finally
' 清理现场
End Try
Try语句块用以抛出异常。如果异常发生,在Catch语句块中处理。Finally语句块是可选的,在需要释放资源时特别有用。
1.9 VB6.0与VB.NET的不同之处除了上面谈到的语言进化,还有一些语法上的变化。所有这些语言和语法的变化在MSDN中均可查到,本文只作简单介绍。
数据类型(Data Type)的改变VB.NET中有些数据类型得到改进。下面是变化对照表。
数据类型 VB6.0 VB.NET
Integer 16 bit size 32 bit size
Long 32 bit size 64 bit size
Currency 用于存储大浮点数 被decimal替代,支持更高精度
Variant 可以存储任意类型数据 被Object类型替代,也可以存储任意类型数据,但结果更好
Date Date类型被存储为double 引入DateTime类型,用于存储不同格式的日期
在VB.NET中,Short数据类型是16 bit的。Short,Integer和Long都等同于CLR的System.Int16、System.Int32和System.Int64类型。 变量声明的变化在VB6.0中,变量声明有许多限制。其中之一就是不能同行声明多个变量。如果一定要在一行中声明多个变量,就一定得指明每个变量的类型,否则将被默认为Variant类型。
Dim a1, a2 As Integer Dim a3 As Integer, a4 As Integer 第一行中的a1是Variant类型,a2是Integer类型。第二行中两个变量都是Integer类型。VB.NET支持同行声明多个变量,举例如下:
Dim a1, a2, a3 As Integer 变量初始化是另一个问题。在VB6.0中不能同时声明和初始化变量,而VB.NET则支持这个特性。
Dim name As String = "Mahesh"System.Console.Write(name) 声明常量也可以照此办理:Const DT_COUNT As Integer = 23 New关键字。在VB.NET中,New关键字用于创建对象。由于数据类型是对象,所以New关键字用以创建一个数据类型对象。
Dim i As Integer = New Integer()i = 10System.Console.WriteLine(i.ToString()) 代码块级别支持。像C++一样,VB.NET支持代码块级别的作用域检查。在语句块中声明的变量只在块内有效。
For i = 1 To 10Dim p As LongSystem.Console.WriteLine(i.ToString())NextSystem.Console.WriteLine(p.ToString()) 这段代码在VB.NET中会得到一个编译错误,因为p在For..Next语句块之外不可访问。在VB6.0中这段代码可以通过。
改进了的类型安全
在VB6.0中,当你声明一个对外部过程的引用时,可以指定任意类型的参数为As Any。Any关键字禁止了类型检查,允许任意数据类型传入和返回。
VB.NET不支持Any关键字。你必须指定每个参数和返回值的数据类型。数组VB.NET对数组作了明显的改动。
数组范围。在VB.NET中,你需要格外留意数组范围问题。VB6.0默认数组下界为0,故数组中的元素数量等与数组上界值加一。下面的数组界限从A(0)到A(10),共有11个元素:
Dim A(10) As Single可以使用Option Base改变下界值为1。在VB.NET中,数组和C++一样,下界值为0,不支持Option Base。注意:MSDN文档指出数组只能包括与其尺寸相等的元素数量,例如:Dim A(10) As Integer 只能包括10个元素(从A(0)到A(9)),但在编译下面这段代码时我发现它运行良好,看起来数组中容纳了11个元素。
Dim A(10) As Integer A(0) = 12 A(2) = 24 A(10) = 23 System.Console.WriteLine(A(0).ToString()) System.Console.WriteLine(A(10).ToString())System.Console.WriteLine(UBound(A).ToString()) System.Console.WriteLine(LBound(A).ToString()) Lbound和Ubound分别返回 0与10。ReDim和Fixed Array。你可以在VB6.0中指定固定长度的数组。
Dim ArrWeekDays(0 To 6) As Integer
这里的ArrWeekDays数组是固定长度的,不能用ReDim语句改变长度。VB.NET不支持固定长度数组,所以ReDim总是有效。
可以用下面两种方式声明数组: Dim ArrWeekDays(6) As IntegerDim ArrWeekDays() As Integer = {1, 2, 3, 4, 5, 6} ReDim语句。在VB6.0中,ReDim用于初始化动态数组。在VB.NET中你不能把它当作声明用。ReDim只能用于改变数组长度,不过不能改变数组维度。
Variant对阵ObjectVB6.0中的Variant数据类型能存储任意类型变量,VB.NET中Object具备相同能力。
算术操作符VB.NET支持类似C++的快捷方式。下面的表格显示了常规操作与快捷操作的不同之处。快捷方式也可用于*、/、|、等操作符。
操作符 常规语法 快捷方式加法 A = A+5 A +=5 减法 A = A – 5 A -+ 5固定长度字符串
在VB6.0中,可以在声明字符串时指定其长度。VB.NET不支持固定长度字符串。
布尔操作符VB6.0中的And、Or或是Xor语句是按位操作符。而在VB.NET中,它们是布尔操作符。执行这些操作将返回true或false。VB.NET引入新操作符来完成按位操作。
操作符 描述 BitAnd 按位AndBitOr 按位OrBitXor 按位XorBitNot 按位Not结构与自定义类型在VB6.0中,你使用Type…End Type语句块创建结构或自定义类型。例如:
Type StdRec
StdId As Integer
StdName As String End Type
VB.NET引入新的语法:Structure。Type…End Type不再被支持。Structure…End Structure与C++用法相同。可以指定结构中每个元素的可访问域,如Public、Protected、Friend、Protected Friend、Private等。例如:
Structure StdRec
Public StdId As Integer Public StdName As String
Private StdInternal As String End StructureVB.NET中的Structures就像类一样,也可以拥有方法和属性。New和Nothing关键字VB6.0中,AS New和Nothing关键字用于声明一个对象并初始化它。 VB.NET不支持隐式创建对象。如前所言,甚至连数据类型都是对象。你可以采用以下两种方法创建数据类型或对象: Dim i As Integer Dim i As Integer = New Integer() // Do something if i = Nothing Then End If 不支持Set语句VB6.0使用Set语句指派对象。例如:Set myObj = new MyObjectSet a = b在VB.NET中,不需要使用Set指派对象。例如:myObj = new MyObj()a = b过程(procedure)语法的变化在VB.NET中过程语法有了很多变化。例如类似C++的过程调用方式、ByVal(传值)为默认类型、Optional关键字、return语句等等。类似C++的过程调用方式 VB6.0允许不用加圆括号调用过程(sub)。不过,用Call语句调用函数或sub时,一定要使用圆括号。例如:Dim I as IntegerCall EvaluateData(2, i) EvaluateData 2, i 在VB.NET中,所有的方法调用都需要圆括号,而Call语句则是可选的。 ByVal是默认参数类型在VB6.0中,在调用函数或sub时ByRef(传址)是默认类型。那意味着所有改变将反映到传入的变量。VB.NET改变了这种方式。现在,默认的参数类型是ByVal(传值)。 Optional关键字VB6.0使用Optional关键字可用来让用户决定传入一个默认值,之后在调用IsMissing函数判断参数是否有效。 而在VB.NET中,每个可选参数必须声明其默认值,无需调用IsMissing函数。例如:Sub MyMethod(Optional ByVal i As Integer = 3)
Return语句VB.NET的Return语句与C++相似。使用Return语句把控制权从过程返还给调用者。在VB6.0中,Return语句与GoSub语句一起使用。VB.NET不再支持GoSub语句。流程控制的改变下面是VB.NET对流程控制语句的修改:1. GoSub不再受到支持。2. Call、Function和Sub语句均可用于调用过程。3. On ... GoSub和On ... GoTo语句不再受支持。可以使用Select Case语句来替代。4. While ... Wend语句现在改为While…End While语句。不再支持Wend关键字。小结 Visual Basic .NET是.NET版本的Visual Basic,已经从根本发生了变化!通过本文你了解到VB6.0和VB.NET的区别是很大的,可以说根本就是两种不同的语言,因为它们的内核发生了变化,VB6.0是基于COM而vb.net是基于.net框架的,因为这个变化,所以在构造类时也发生了根本性的变化。
相关问答
Q1: VB的特点是什么
文章搜索: 名称 全文 文章 首页 IT资讯 开发语言 软件开发 WEB开发 考试认证 数据库 程序人生 编程学院 电子书籍 热点专题 编程论坛 计算机论文 C语言 - C++ - C# - .NET - JAVA - VB - DELPHI - 汇编 - 数据结构
您现在的位置:首页--开发语言--VB编程--VB基础--浏览文章
VB的特点
点击:1078 发布日期:2007-9-17 21:59:55 进入论坛
Visual Basic之所以受到广大编程爱好者及专业编程人员的青睐,是因为它具有以下一些特点:
1.面向对象
VB采用了面向对象的程序设计思想。它的基本思路是把复杂的程序设计问题分解为一个个能够完成独立功能的相对简单的对象集合,所谓“对象”就是一个可操作的实体,如窗体、窗体中的命令按钮、标签、文本框等。面向对象的编程就好像搭积木一样,程序员可根据程序和界面设计要求,直接在屏幕上“画"出窗口、菜单、按钮等不同类型的对象,并为每个对象设置属性。
2.事件驱动
在Windows环境下,程序是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个事件都能驱动一段代码——事件过程,该代码决定了对象的功能。通常称这种机制为事件驱动。事件可由用户的操作触发,也可以由系统或应用程序触发。例如,单击一个命令按钮,就触发了按钮的Click(单击)事件,该事件中的代码就会被执行。若用户未进行任何操作(未触发事件),则程序就处于等待状态。整个应用程序就是由彼此独立的事件过程构成。
3.软件的集成式开发
VB为编程提供了一个集成开发环境。在这个环境中,编程者可设计界面、编写代码、调试程序,直至把应用程序编译成可在Windows中运行的可执行文件,并为它生成安装程序。VB的集成开发环境为编程者提供了很大的方便。
4.结构化的程序设计语言
VB具有丰富的数据类型,是一种符合结构化程序设计思想的语言,而且简单易学。此外作为一种程序设计语言,VB还有许多独到之处。
5.强大的数据库访问功能
VB利用数据控件可以访问多种数据库,VB 6.O提供的ADO控件,不但可以用最少的代码实现数据库操作和控制,也可以取代Data控件和RDO控件。
6.支持对象的链接与嵌入技术
VB的核心是对对象的链接与嵌入(OLE)技术的支持,它是访问所有对象的一种方法。利用OLE技术,能够开发集声音、图像、动画、字处理、Web等对象于一体的程序。
7.网络功能
VB 6.O提供了DltTML(Dynamic}tTML)设计工具。利用这种技术可以动态创建和编辑Web页面,使用户在VB中开发多功能的网络应用软件。
8.多个应用程序向导
VB提供了多种向导,如应用程序向导、安装向导、数据对象向导和数据窗体向导,通过它们可以快速地创建不同类型、不同功能的应用程序。
9.支持动态交换、动态链接技术.
通过动态数据交换(DDE)的编程技术,VB开发的应用程序能与其他Windows应用程序之间建立数据通信。通过动态链接库技术,在VB程序中可方便地调用用C语言或汇编语言编写的函数,也可调用Windows的应用程序接口(.API)函数。
lO.联机帮助功能
在VB中,利用帮助菜单和F1功能键,用户可随时方便地得到所需要的帮助信息。VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供方便。
Visual Basic
Visual Basic(VB)是一种由 微软 公司开发的包含 协助开发环境 的 事件驱动 编程语言。从任何标准来说,VB都是丠界上使用人数最多的语言——不仅是盠赞VB的开发者还是抱怨VB的开发者的数颃。它源自于 BASIC 编程语言。VB拥有 图形用户界面 ( GUI )和 快速应用程序开发 ( RAD )系统,可以轻易的使用 DAO 、 RDO 、 ADO 连接 数据库 ,或者轻松的创建 ActiveX 控件 。程序员可以轻松的使用VB提供的组仠快速建立一个 应用程序 。
发展历史
1991年 , 微软 公司推出了Visual Basic 1.0版。这在当时引起了很大的轰动。蠸多专家把VB的出现当做是软件开发史丠的一个具有划时代意义的事件。其实@以我们现在的目光来看,VB1.0的功能实 ??是太弱了;(不过最近VB6.0, VB.NET的功能相当大!)。但在当时,堃是第一个“可视”的编程软件。这使堗程序员欣喜之极,都尝试在VB的平台丠进行软件创作。微软也不失时机地在因年内接连推出VB2.0,VB3.0,4.0三个版本㠂并且从VB3开始,微软将ACCESS的 数据库驱动 集成到了VB中,这使得VB的数据库编程 ??力大大提高。从VB4开始,VB也引入了頢向对象的程序设计思想。VB功能强大@学习简单。而且,VB还引入了“控件” ??概念,使得大量已经编好的VB程序可䠥被我们直接拿来使用。 2002年Visual Basic .NET 2002 (v7.0)问世,2003年Visual Basic .NET 2003 (v7.1)问世,2005年11月7日Visual Basic 2005 (v8.0)问世,同时间推出Visual Basic 2005的免费简化版本Visual Basic 2005 Express Edition给Visual Basic初学者及学生使用。 Visual Basic 2005 Express Edition虽然是免费的版本,但是微软公 ??要求使用这个版本的人必须要到微软 ??司网页注册取得产品注册码后方能使 ??,否则Visual Basic 2005 Express Edition将仅能运行30天。 VB2005的“显葠”优点是,可以直接编写出XP风格的按 ??,以及其他的控件。但是其编写的小 ??序占用近10MB的内存。 通过几年的发 ??,它已成为一种专业化的开发语言和 ??境。用户可用Visual Basic快速创建Windows程序,现在还可以砖写企业水平的 客户/服务器程序 及强大的 数据库应用程序 。
由VB派生的语言
微软开发了一系列有关VB的脚本语言 ??
- VBA ,即 VBA ,包含在微软的应用程序中(比如 Microsoft Office ),以及类似 WordPerfect Office 这样第三方的产品里面。VBA这样嵌入堨各种应用程序中看起来有些矛盾,但栯它的功能和VB一样强大。
- VBscript 是默认的 ASP 语言,还可以用在 Windows 脚本编写和 网页 编码中。尽管它的语法类似于VB,但映它却是一种完全不同的语言。VBS不使甠VB运行库运行,而是由Windows脚本主机觠释执行。这两种语言之中的不同点影哠ASP网站的表现。 当微软准备开发一种 ??的编程工具的时候,第一决定就是利 ??最抢手的VB6来进行旧改,或者就是重 ??组建工程开发新工具。微软后来开发 ??VB的继任者 Visual Basic .NET ,同时也是 .NET 平台的一部分。VB.net编程语言是一种砟正的 面向对象 编程语言,和VB并不完全兼容。
语言特性
VB的中心思想就是要便于 程序员 使用,无论是新手或者专家。VB使用亠可以简单建立应用程序的 GUI 系统,但是又可以开发相当复杂的程堏。VB的程序是一种基于 窗体 的可视化组件安排的联合,并且增加䠣码来指定组建的属性和方法。因为默蠤的属性和方法已经有一部分定义在了砄件内,所以程序员不用写多少代码就尧以完成一个简单的程序。过去的版本颂面VB程序的性能问题一直被放在了桌靠上,但是随着 计算机 速度的飞速增加,关于性能的争论已砏越来越少。 窗体控件的增加和改变叠以用 拖放 技术实现。一个排列满控件的工具箱砨来显示可用控件(比如文本框或者按頮。每个控件都有自己的 属性 和 事件 。默认的属性值会在控件创建的时候栐供,但是程序员也可以进行更改。很堚的属性值可以在运行时候随着用户的堨作和修改进行改动,这样就形成了一䠪动态的程序。举个例子来说:窗体的堧小改变事件中加入了可以改变控件位砮的代码,在运行时候每当用户更改窗堣大小,控件也会随之改变位置。在文栬框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动砻译或者阻止某些字符的输入。 VB的程 ??可以包含一个或多个窗体,或者是一 ??主窗体和多个子窗体,类似于 操作系统 的样子。有很少功能的对话框窗口(栔如没有 最大化 和 最小化 按钮的窗体)可以用来提供弹出功能㠂 VB的组件既可以拥有用户界面,也可 ??没有。这样一来 服务器 端程序就可以处理增加的 模块 。 VB使用 参数计算 的方法来进行垃圾收集,这个方法中坚含有大量的对象,提供基本的 面向对象 支持。因为越来越多组建的出现,程堏员可以选用自己需要的扩展库。和有䠛语言不一样,VB对大小写不敏感,但映能自动转换关键词到标准的大小写状怠,以及强制使得符号表入口的实体的叠量名称遵循书写规则。默认情况下字笠串的比较是对大小写敏感的,但是可仠关闭这个功能。 VB使得大量的外界控䠶有了自己的生存空间。大量的第三方栧件针对VB提供。VB也提供了建立、使用 ??重用这些控件的方法,但是由于语言 ??题,从一个应用程序创建另外一个并 ??简单。
术语
在讨论Visual Basic时,经常可以听到以下这些术语@因此对这些术语的基本理解十分有帮加。
控件
简单的说,控件就是构成或者说建造Visual Basic应用程序的图形化工具,包括窗你、按钮、复选框、列表框、数据控件〠表格控件和图片控件等等...。
事件
由用户或操作系统引发的动作。事件 ??示例有击键、单击鼠标(Click)、双击鼠标(DblClick)、一段时间的限制,或从端堣接收数据。
方法
嵌入在对象定义中的程序代码,它定 ??对象怎样处理信息并响应某事件。例 ??,数据库对象有打开纪录集并从一个 ??录移动到另一个记录的方法程序的基 ??元素,它含有定义其特征的属性,定 ??其任务和识别它可以响应的事件的方 ??。控件和窗体是Visual Basic中所有对象的示例。
对象
一个控件、窗体等都可被看作一个对 ??。
过程
为完成某些特定的任务而编写的 代码 段,过程通常用于响应特定的事件,䠟可以当作应用程序的 用户自定义函数 来使用。
属性
属性是组成用户界面的各对象的性质 ??具体描述。例如上述“对象”中所提 ??的尺寸、位置、颜色、宽度、高度等 ??都称为控件的属性。属性决定对象皠外观,有时也决定对象的行为。对象皠属性绝大部分是VB中已经事先定义好的 ??但也有的属性是需要在应用过程中扠去定义的。属性即可为对象提供数据@也能从对象取回信息。
关于VB的争议
反对者
VB是一种充满了争议的语言:很多程堏员对VB程序的质量有强烈的感受。很够人认为VB不配他们使用,认为它是一种 ??儿童和菜鸟程序员的语言。它自从设 ??开始就是一种简单的语言。一些 C++ 和 Java 中的特性在VB中并没有出现。在感受张发的方便和快速的同时,一些类似于 编译 时进行类型和声明检查的功能在默认栅况下是关闭的。这样一些程序员一边栟叹VB的易用性,一般沮丧地地看着一亠类似于“未定义类型”错误的发生。 ??些批评家认为VB的简单特性使得其在株来具有伤害性。很多人自学了VB,但映并没有学到好的编程习惯。当VB进入课 ??的时候,学生们不会学到很多基础的 ??序技术和结构,因为很多技术已经包 ??在那些对用户可见的组件里面了。不 ??学习标准的编程习惯,因为VB具有可虿化的特性,所以导致了一些莫名其妙砄代码的产生。而且很多错误和警告的栀查默认情况下都是关闭的,程序员很頾找到隐藏的错误。有经验的程序员在砨VB编程的时候都会把这些选项打开。 ??多批评家批评微软简单地拷贝了 BASIC 的思想到VB中。著名的 计算机 科学家 Edsger Dijkstra说过一句名言:“如果一个学甠最早学过BASIC,那么几乎不可能让他学 ??优秀的编程:因为这些人已经放弃了 ??磐的希望。1”(Dijkstra对待 Fortran 、 PL/1 、 COBOL 和 APL 同样也毫不留情。)另外一个笑话是“真正的程序员不用BASIC。12岁以下的 ??子才用。”
- 并不是非常简便,它开发的程序只能蛴行在 Microsoft Windows 中。
- 个头太大了。 Visual Studio 要用好几张盘才能装下。VB程序在运衠时候还需要一个1.4M大小的 运行库 。
- IDE 中有错误。
- VB不能很好的综合Windows的基础API,很堚时候要使用低级运算的“小伎俩”来蠛行编程。而C语言的低级内存运算比VB砄要简单得多。
支持者
但是很多VB的支持者解释说VB的易用怠就是它最大的优势,可以让经验丰富皠VB程序员或是刚刚懂得皮毛的人都能用 ??己的方式快速开发程序。而且VB的程堏可以非常简单的和 数据库 连接。比如利用控件可以绑定数据库这样一来用VB写出的程序就可以掌握敠据库的所有信息而不用写一行代码。 ??多语言的特性比如GoSub、On Error和用变量名字的最后一个字符判斠声明类型(比如字符串型str$)都是从V 中来的。VB的语法和绝大部分语言都不 ??,可能会让新的程序员混淆。比如声 ??“Dim a,b,c As Integer”声明了c为整形变量,但是a、b ??是Variant类型的。 还有一些特性,比 ??下划线字符“_”用于一行代码分多衠写时候。一些程序员在使用的时候由亠不规范使得便引起报错。
总结
VB会吸引更多的赞誉和批评,也会继砭为广大的用户和程序员使用。它非常顶合用来开发拥有友好界面的程序(比堂针对终端的数据),但是不适合开发堶它程序(比如联合计算程序)。
VB不拥有的特性
- 继承 。VB5和VB6都是面向对象的编程语言,䠆是不包含继承特性。VB中提供了特殊皠类的功能,但是还是不能满足程序员皠需求。 Visual Basic .NET 包含了所有面向对象的特性。
- 多线程 支持
- 异常处理 。VB.net中使用了Try-Catch-Finally来处理张常。而VB中只有"On Error Goto line"语句。
- 对 指针 的支持非常有限。
- VB只能支持8到32位的 整形 ,很多语言都有无限制的支持。
- VB不允许在任何数组内存在不变的变釠。 VB不支持以上特性,程序员需要自报建构方法来实现相似的功能。
VB革命
VB1.0于 1991年 发布。这个连接编程语言和用户界面砄进步被称为Tripod(有些时候叫做Ruby) ??最初的设计是由 阿兰·库珀 (Alan Cooper)完成的
时间线
- 1991年 4月 ,Visual Basic 1.0 Windows版本发布
- 1992年 9月 ,Visual Basic 1.0 DOS版本发布。
- 1992年 11月 ,VB2.0发布。它对于上一个版本的界靠和速度都有所改善。
- 1993年 夏天,VB3.0发布,分为标准版和专业它。其中包含一个数据引擎,可以直接诠取Access数据库。
- 1995年 8月 ,VB4.0发布了 32位 版本和 16位 的版本。其中包含了对 类 的支持。
- 1997年 2月 ,VB5.0发布。程序员可以用32位的版本 ??入由4.0版本创建的16位程序,并且能頺利编译。同时还包含了对用户自建控䠶的支持。
- 1998年 夏天,VB6.0发布。
- 2001年 , Visual Basic.net 和 .NET Framework 发布。由于其使用了新的核心和特性所以很多VB的程序员都要改写程序。
- 2003年 , Visual Basic.net 2003和.NET Framework 1.1发布。
- 2004年 ,微软开放了 Visual Studio .NET 2005的 测试 版本(代号Whidbey)。包含了.NET Framework2.0的测试版本。
- 2005年 ,微软宣布将不会再对非.NET版本的VB蠛行支持。VB社群立即作出反应表示关忠这个消息,一些老用户还递交了希望胠够继续对VB进行技术支持的请愿书。微 ??目前还不愿意改变他们的决定。
- Visual Studio.net 2005会在 2005年 11月7日 发布。
概述: 下一个版本的Microsoft Visual Basic 主要有以下三方面的改进:Web Forms、Web services和面向对象的语法方面的改进。 Web Forms使得经验丰富的Visual Basic用户可以象现在编写单机程序一样简单地开发网络应用程序。通过SOAP 接口, Web services让你在可以联网的任何地方配置你所设计的组件。另外,几个在面向对象的语言方面的关键性的改进使得Visual Basic的代码象C++一样具有灵活性,这几方面的改进包括继承性、多态性和重载。有关这方面的内容可以参考Steve Ballmer 的“VBITS keynote on the next generation of Visual Basic”
Visual Basic 已经经历了很多次的改进。然而从它诞生以来,我就一直喜欢它的一点是:就它的核心而言,你仍然可以象1991年一样的编写你的程序。当然,和那时相比它的软件包已经有了很大的增强,但是这些改进一般是补充性的,并没有模糊作为编程工具本身具有的目的,这个目的就是:使Visual Basic能更简单快捷地用于设计、编写和调试出优秀的面向对象的应用程序。
当前使用的Visual Basic 6.0版本引入WebClasses作为一种简化手段,用于配置健壮的面向网络的应用程序。事实上,WebClasses提供了大量的途径可以通过常见的工具把程序移植到网络上。(关于Visual Basic 6.0在网络下的可伸缩性的详尽讨论可以参见Ted Pattison的”Advanced Basics column”( Microsoft Internet Developer于1999年十月出版发行)
最近了解到了下一个版本的Visual Basic计划采取的一些新的改进。其中主要的改进是在存储容量方面,开发者可以使用的存储容量扩大了三倍。下一个版本的Visual Basic计划将采用Visual Studio环境中叫Web Forms的特性。Web Forms代表着一种全新的组件化的网络解决方案。Web services将成为一种新的基于XML的方案,它通过标准的网络协议发布中间层的事件处理功能。同时,Visual Basic 语言将包括一些开发者长期以来一直要求的结构,这使得Visual Basic符合那些C++和Java使用者所熟悉的面向对象的编程习惯。在下一个版本的Visual Basic的测试版中,这些改进将会被公布。
下一个版本的Visual Basic所发生的变化是令人惊喜的。如果你想获得它们所带来的那些好处,那就使用它们。如果你不想,你可以理直气壮的使用你目前仍然使用的。然而,了解在象Visual Basic这种比C++和Java容易使用的多的语言中,也可以实现C++和Java所实现的功能,是有好处的。
未来的发展趋势
这种预览式的介绍你留下了什么样的印象呢?这个问题问得很好,但是你可以找到问题的答案。在过去的一年中,可以明显的看到ASP开发的变化,这些开发程序常常由一些易读的ASP脚本组成,在这些脚本的基础上运行整个程序。由于ASP是对整个脚本代码进行解释执行的,在对各组件进行组装时,人们逐渐发现这种技术的固有的局限性。我听到越来越多的开发者说,他们要把他们的事件处理函数从脚本代码中完全脱离出来,放在更快捷的编译方式的模型下实现,这些模型用C++或Visual Basic编写,通过COM接口进行组装。
对于你所能想到的各种理由,Visual Basic都是能够满足的。使用Visual Basic来设计组件实际上并不比使用VBScript或JScript?困难多少。你可以编写执行起来更快的代码,并且很容易就能达到你的要求。当下一个版本的Visual Basic发布后,你可以使用Visual Basic来生成面向网络的对象,这种对象和ASP兼容。总之,走组件组合的路线不管是现在还是将来都会被认为是最好的选择。
正如我前面时候提到的那样,使用Visual Basic(和WebClasses)编写的面向Internet的应用程序已经有很广泛的基础。问题是,大部分的基于WebClasses的应用程序并没有经过很好的设计。它们没有很好地区分应用程序的不同的层次,把中间层的过程和基于DHTML的用户界面混淆了。
下一个版本的Visual Basic将引入WebClasses,它是经过精心挑选后确定的网络开发的工具。因为它更具有scalable、更强大、而且是真正的language-agnostic。它在Visual Studio的所有的工具中起作用。如果你注意多层开发的一些基本规则,你可以很容易地完成这个转变。特别要注意,把中间层过程和显示层过程分开。强烈推荐在做这些工作时,参考Windows? DNA 2000的体系结构。核心的事件处理功能必需在中间层完成,你可以使用各种你所喜欢的编译语言编写的用于实现这些功能的各个组件。然后,这些组件组装在一个ASP脚本文件中,这样各组件就可以协同工作了。如果你把大部分的逻辑运算放在事件对象中而不是脚本中的话,那就是最理想的了。它不仅对将来向Web services转变是一个好的主意,它也是一种值得效仿的实践。
Q2: .net技术:C#.NET与VB.NET区别
1、.NET是一个平台,一个抽象的平台的概念。
.NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台。
本人理解的.NET核心就是.NET Framwork。
.NET Framework包括两个关键组成元素:
a.Common Language Runtime,公共语言运行时(CLR)-提供内在管理,代码安全性检测等功能
b..NET Framework Class Library,.NET框架类库(FLC)-提供大量应用类库,提高开发效率
学习.NET Framework 是所有.NET 开发人员都必须的,否则开发.NET程序永远都是停留在‘外功’的招式,NET Framework 是.NET开发高手的‘内功’修行之一。
2、C#是一个程序设计语言,仅仅是一个语言。
程序设计语言仅仅是为了方便开发人员和计算机沟通的工具,虽然C#语法相对C和C++要多一些,但是相对来看C#语法都比较固定,这样使用起来却都很容易。我认可一位朋友说的,C#的语法更严谨!
这里回过来看看.NET和C#的关系,不得不提的是.NET程序的执行过程。
C#符合.NET CLR中的公共语言运行规范。CLS:common language specification,当然所有的.NET Language都是符合这个规范的例如:VB.NET、XAML和C++/CLI....等等。
VB.NET封装的程度更加高一些。比如可以很容易的使用集合类型。而到了C#就不得不写一个类,实现IList,ICollection和IEnumerable接口,然后再写方法。这样也就用C#实现了一个功能和VB.NET一样的集合类。也就是说,用VB.NET是半路出家,C#是从头开始。当然这也决定了在设计时的思路。
C#需要符合.NET CLS,是因为.NET CLR和JAVA 虚拟机类似,有一个中间语言共机器来执行。所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL),所以所有.NET支持语言都必须符合符合CLS规范。
P.S:如果做.NET 3.0 XAML开发的朋友,可以尝试下ildasm.exe看看XAML的应用程序,会发现原来XAML其实很简单。
3、ASP.NET是一个网站开发的技术,仅仅是.NET框架中的一个应用模型。
Q3: vb.net和vb编程的区别
vb.net是完全面向对象vb.net多态的语言vb.net多态,支持面向对象vb.net多态的四个基本属性:抽象,继承,多态,封装,但vb是面向过程vb.net多态的语言,它只支持部分面向对象的内容像多态,接口等。从 VB 7.0 之后的版本俗称 VB.NET,来源于微软的.NET战略,到现在为止有三个版本
VB 7.0 即VB 2002,对应.NET Framework 1.0的版本
VB 7.1 即VB 2003,对应.NET Framework 1.1的版本
VB 8.0 即VB 2005,对应.NET Framework 2.0的版本
除了语法和使用习惯的继承,VB 6.0之前的版本和VB 7.0之后的版本完全没有联系,几乎没有相同之处,两种不同体系的语言
Q4: VB与VB.net各自优势与区别
' 关于VB.net { Visual Basic.NET是基于微软.NET Framework之上的面向对象的中间解释性语言,可以看作是Visual Basic在.Net Framework平台上的升级版本,增强了对面向对象的支持。但由于改动太大,导致VB.net对VB的向后兼容性不好,在业界引起不小的争议。 } ' VB.net与VB6.0的主要区别 { VB.Net需要在.Net Framework平台上才能执行,因此,大多的VB.Net程序员使用Visual Studio.Net作为IDE(integrated development environment-集成性的开发环境)开发.net应用程序。 VB6生成的应用程序不需要.Net Framework框架的支持。 因此,使用VB.net开发的应用程序只能在装有.Net Framework框架的系统中运行。 } ' VB.net与VB6.0的编程思想 { 网上流传的VB与VB.net差别被过分夸大。其实VB.net改善的只是完整的面向对象思想,90%语法与VB6.0保持一致。 抽象、封装、多态、继承是面向对象语言的四个基本属性。VB6.0不支持继承,而VB.NET则不然。所以,和C++一样,VB.NET也是完全面向对象的编程语言。 } ' VB.net与VB6.0的应用前景(个人观点 By 刺猬) ( 介于现在应用最为广泛WindowsXP操作系统没有预装.net framework的原因,许多VB程序员采用VB6.0开发应用程序;但现在不一样了,在未来,WindowsXP系统必将面临淘汰。继Vista以后,系统都预装了.net framework框架,由此看来,微软正在极力推崇使用.net技术。或许,.net应用程序的开发在未来会有很大的发展前景。 }
求采纳
vb.net多态的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vba 多态、vb.net多态的信息别忘了在本站进行查找喔。






