VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • 从VB到VB.NET——VB6程序员如何转向.NET

《开发高手》

 

 (发表于《CSDN开发高手》2003年9月号)

作者 Mahesh Chand

翻译 韩磊

 

Visual Basic .NETMicrosoft Visual Studio .NET套件中主要组成部分之一。.NET版本的Visual Basic增加了更多特性,而且演化为完全面向对象(就像C++)的编程语言。本文将介绍VB.NET的新特性,并比较VB6.0/VB.NET之间的区别,阐述如何利用VB.NET编写简单的应用程序。

1.1 什么是 VB.NET? 

VB.NETVB6.0的后续版本。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就包括了ConsoleObject等类型定义。如果想使用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 Sub
End Module

1.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 Sub

WriteLine()方法归属于Console类,它负责向控制台写一个带有行结束符的字符串。如前所述,Console类定义于System namespace,你通过直接引用来控制类成员。

Console类负责读写系统控制台。读控制台输入用ReadReadLine方法,向控制台输出用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有什么新特点? 

作为VB6.0的后续版本,VB.NET更加稳定,而且完全面向对象。也许你还记得,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)中定义。Namespaceassembly中定义的类组织起来。一个namespace可以包括多个assembly,一个assembly也可以在多个namespace中定义。
 
namespace
树的根节点是System namespace。在.NET Library中,每个class都在一组相似的类别中定义。例如,System.Data namespace只包括数据相关类。同样,System.Multithreading只包括多线程类。

在使用.NET支持的语言(如C#VB.NETC++.NET等)创建新应用程序时,你会注意到每个应用程序都被定义为一个namespace,而所有的class都归属于这个namespace。通过引用这个namespace,其它应用程序就能存取这些class
 
.NET中,代码被编译为中间语言(Intermediate LanguageIL),assembly中存储了IL代码、元数据和其它资源文件。同一个assembly可以附属于一个或多个Exe/DLL。所有的.NET库都存储在assembly中。


1.7 VB.NET: 完全面向对象的编程语言

抽象、封装、多态、继承是面向对象语言的四个基本属性。VB6.0不支持继承,而VB.NET则不然。所以,和C++一样,VB.NET也是完全面向对象的编程语言。


Class  Module

VB.NETClass...End Class语句对创建class。每个VB.NET至少包括一个Module(模块)。ModuleModule…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 Module


Property

属性(Property)是类变量的公共描述。Property…End Property语句用以创建property。属性的Get/Set方法分别用于取得和设置属性值。下面的例子中,DataTestClass的属性。

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