适用于:
Microsoft Visual Basic.NET
摘要:《Visual Basic .NET 入门指南》介绍了 Visual Basic 语言的几种新功能,从而能充分利用 .NET 平台。下面的示例应用程序示范了如何构建一个实现 QuickSort 算法的简单 Visual Basic .NET 项目来。
下载 Quicksort_Visual_Basic_.NET.exe。
简介
Visual Basic .NET 将许多新的功能引入 Visual Basic 语言,使之能够充分利用 .NET 平台。以前版本的程序员将需要稍作调整才能转到 .NET 版本上。
下面的示例应用程序示范了如何构建一个实现 QuickSort 算法的简单 Visual Basic .NET 项目来。它包括了 Visual Basic .NET 程序的基本组成部分:读/写控制台和文件、创建函数和使用基本数组。
这些入门指南并不打算涵盖该编程语言的所有方面。它们只是您探索这种语言的一个起点。我们鼓励您按照本教程的说明执行,因为它包括了 QuickSort 应用程序的各个不同部分。您还可以获得完整的源代码和项目文件。
建议的要求
编译此示例应用程序需要 Visual Studio.NET(测试版 2 或更高版本)。关于 Visual Basic 的知识是有帮助的但不是必需的。
步骤 1. 开始项目
Visual Studio 中的开发工作以解决方案的形式进行组织,每个解决方案包含一个或多个项目。在本教程中,我们创建的解决方案包含一个 Visual Basic 项目。

Visual Basic 解决方案
Visual Studio .NET 已经创建了含有一个简单 Visual Basic 项目的解决方案。该项目包含两个文件:assemblyinfo.vb 和 module1.vb。
接下来的几个步骤将讨论这些不同的文件以及如何编译该项目。
步骤 2. Hello, World!
很遗憾,但我们仍然无法抵御这种诱惑……我们还是不得不完成一个经典的"Hello, World!"应用程序,这个应用程序最初是用 C 语言编写的。
修改源代码
1.
在 Solution Explorer 中双击文件"module1.vb"。可以通过 View 菜单来显示 Solution Explorer。
2.
更改预生成的模板 (module1.vb),如下面以斜体突出显示的 代码所示。
' Import namespaces
Imports System
Module Module1
Sub Main()
Console.WriteLine ("Hello, VISUAL BASIC .NET World!")
End Sub
End Module
3.
注意,当您键入代码时,Visual Studio 将为您提示类和函数的名称(因为 .NET 框架发布了这种类型信息)。

理解更改
System.Console 类的 WriteLine() 函数打印传递给它的字符串,其后紧跟一行新的字符。此函数可以接受许多其他数据类型(包括整型和浮点型)的参数。
在程序加载完成后,控制就传递给 Main() 函数。这就是我们在该过程中插入对 WriteLine() 的调用的原因。
步骤 3. 程序结构
既然我们已经构建了一个简单的 Hello World 应用程序,那么就让我们停下来分析一下 Visual Basic .NET 应用程序的基本组成部分。
源代码注释
单引号 ' 将行的剩余部分标记为一个注释,这样 Visual Basic .NET 编译器就会忽略它。
' This line is ignored by the compiler.' This line is also ignored by Visual Basic .NET compiler.
Imports 指令
.NET 框架为开发人员提供了许多有用的类。例如,Console 类处理对控制台窗口的输入和输出。这些类是按照层次树的形式组织的。Console 类的全限定名实际上是 System.Console。其他的类包括 System.IO.FileStream 和 System.Collections.Queue。
Imports 指令允许您在不使用全限定名的情况下引用命名空间中的类。以斜体突出显示的 代码应用了 Imports 指令。
Imports System
Module Module1
Sub Main()
System.Console.WriteLine("Hello, Visual Basic .NET World!")
Console.WriteLine("Hello, Visual Basic .NET World!")
End Sub
End Module
模块定义
在 Visual Basic 中,所有的函数都必须封装在类或模块中。一个类可以有多个实例(带有成员变量和函数)。然而,模块只包含函数,并且不能进行实例化。就 Hello World 应用程序来说,Module1 模块包含一个函数,即 Main() 函数。
在本入门指南中,我们并不打算深入地介绍类或模块,但是我们将为您简要概述为什么它们是我们示例应用程序的一部分。
Main() 函数
在应用程序加载到内存之后,Main() 过程就会接收控制,因此,应该将应用程序启动代码放在此函数中。
步骤 4. 控制台输入
现在,我们将继续编写 QuickSort 应用程序。我们需要做的第一件事就是提示用户提供输入和输出文件。
修改源代码
更改 Visual Basic 源文件 (module1.vb),如下面以斜体突出显示的代码所示。其他的差异(如类名)可忽略不计。
' Import namespaces
Imports System
Module Module1
Sub Main()
' Describe program function
Console.WriteLine ("QuickSort VISUAL BASIC .NET Sample Application")
Console.WriteLine ()
' Prompt user for filenames
Dim szSrcFile, szDestFile As String
Console.Write("Source: ")
szSrcFile = Console.ReadLine()
Console.Write("Output: ")
szDestFile = Console.ReadLine()
End Sub
End Module
从控制台进行读取
Console 类的 ReadLine() 方法提示用户输入,并返回输入的字符串。它会自动地为字符串处理内存分配,由于使用了 .NET 垃圾回收器,您不需要做任何释放内存的工作。
程序输出
从菜单中选择 Debug | Start Without Debugging 来运行程序。这是到此为止来自 QuickSort 应用程序的输出的屏幕截图。
步骤 5. 使用数组
在对从输入读取的行进行排序之前,程序需要将其存储到一个数组中。我们将简要讨论可实现对象数组的 .NET 基类的用法。
修改源代码
更改 Visual Basic 源文件 (module1.vb),如下面以斜体突出显示的代码所示。其他的差异(如类名)可忽略不计。
' Import namespaces
Imports System
Imports System.Collections
Module Module1
Sub Main()
' Describe program function
Console.WriteLine ("QuickSort Visual Basic .NET Sample Application")
Console.WriteLine ()
' Prompt user for filenames
Dim szSrcFile, szDestFile As String
Console.Write("Source: ")
szSrcFile = Console.ReadLine()
Console.Write("Output: ")
szDestFile = Console.ReadLine()
' TODO: Read contents of source file
Dim szContents As ArrayList
szContents = New ArrayList()
End Sub
End Module
使用 ArrayList 类
我们将导入 System.Collections 命名空间,这样我们就可以直接引用 ArrayList。此类实现大小可动态调整的对象数组。要插入新的元素,可以简单地将对象传递到 ArrayList 类的 Add() 方法。新的数组元素将引用原始的对象,而垃圾回收器将处理它的释放。
Dim szElement As String
Dim szArray As New ArrayList ()
szElement = "insert-me"
szArray.Add (szElement)
要检索现有的元素,请将所需元素的索引传递给 Item() 方法。另外,作为一种简写形式,还可以使用圆括号 operator (),它实际上映射到 Item() 方法。
Console.WriteLine (szArray(2))Console.WriteLine (szArray.Item (2))
ArrayList 类中还有许多其他方法,但是插入和检索都是我们需要在此示例中使用的。请查阅 MSDN 库以获得完整的参考指南。
没有评论:
发表评论