入门教程摘要:《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 (测试版2 或更高版本)。
关于Visual Basic 的知识是有帮助的但不是必需的。
步骤 1. 开始项目Visual Studio 中的开发工作以解决方案的形式进行组织,每个解决方案包含一个或多个项目。
在本教程中,我们创建的解决方案包含一个Visual Basic 项目。
创建一个新项目1. 在Visual Studio .NET 环境中,从菜单中选择File | New | Project。
2. 在左侧选择Visual Basic,然后在右侧选择Console Application。
3. 指定项目的名称,然后输入创建项目的位置。
Visual Studio 会自动创建项目目录。
4. 单击OK,现在就正式开始了!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 namespacesImports SystemModule Module1Sub Main()Console.WriteLine ("Hello, VISUAL BASIC .NET World!")End SubEnd Module3. 注意,当您键入代码时,Visual Studio 将为您提示类和函数的名称(因为 .NET 框架发布了这种类型信息)。
编译应用程序1. 既然您已经完成了修改,就可以通过在Build菜单中简单地选择Build来编译Visual Basic 项目。
2. 来自Visual Basic 编译器的错误和消息将显示在Output窗口中。
如果没有错误,则可以通过单击Debug菜单下的Start without Debugging 来运行Hello World 应用程序。
程序输出在Visual Studio 环境中运行Hello World 示例应用程序时,输出的屏幕截图如下。
理解更改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 SystemModule Module1Sub Main()System.Console.WriteLine("Hello, Visual Basic .NET World!") Console.WriteLine("Hello, Visual Basic .NET World!")End SubEnd Module模块定义在Visual Basic 中,所有的函数都必须封装在类或模块中。
一个类可以有多个实例(带有成员变量和函数)。
然而,模块只包含函数,并且不能进行实例化。
就Hello World 应用程序来说,Module1 模块包含一个函数,即Main()函数。
在本入门指南中,我们并不打算深入地介绍类或模块,但是我们将为您简要概述为什么它们是我们示例应用程序的一部分。
Main() 函数在应用程序加载到内存之后,Main() 过程就会接收控制,因此,应该将应用程序启动代码放在此函数中。
步骤 4. 控制台输入现在,我们将继续编写QuickSort 应用程序。
我们需要做的第一件事就是提示用户提供输入和输出文件。
修改源代码更改Visual Basic 源文件(module1.vb),如下面以斜体突出显示的代码所示。
其他的差异(如类名)可忽略不计。
' Import namespacesImports SystemModule Module1Sub Main()' Describe program functionConsole.WriteLine ("QuickSort VISUAL BASIC .NET Sample Application")Console.WriteLine ()' Prompt user for filenamesDim szSrcFile, szDestFile As StringConsole.Write("Source: ")szSrcFile = Console.ReadLine()Console.Write("Output: ")szDestFile = Console.ReadLine()End SubEnd Module从控制台进行读取Console类的ReadLine() 方法提示用户输入,并返回输入的字符串。
它会自动地为字符串处理内存分配,由于使用了 .NET 垃圾回收器,您不需要做任何释放内存的工作。
程序输出从菜单中选择Debug | Start Without Debugging 来运行程序。
这是到此为止来自QuickSort 应用程序的输出的屏幕截图。
步骤 5. 使用数组在对从输入读取的行进行排序之前,程序需要将其存储到一个数组中。
我们将简要讨论可实现对象数组的 .NET 基类的用法。
修改源代码更改Visual Basic 源文件(module1.vb),如下面以斜体突出显示的代码所示。
其他的差异(如类名)可忽略不计。
' Import namespacesImports SystemImports System.CollectionsModule Module1Sub Main()' Describe program functionConsole.WriteLine ("QuickSort Visual Basic .NET Sample Application")Console.WriteLine ()' Prompt user for filenamesDim szSrcFile, szDestFile As StringConsole.Write("Source: ")szSrcFile = Console.ReadLine()Console.Write("Output: ")szDestFile = Console.ReadLine()' TODO: Read contents of source fileDim szContents As ArrayListszContents = New ArrayList()End SubEnd Module使用ArrayList 类我们将导入System.Collections命名空间,这样我们就可以直接引用ArrayList。
此类实现大小可动态调整的对象数组。
要插入新的元素,可以简单地将对象传递到ArrayList类的Add()方法。
新的数组元素将引用原始的对象,而垃圾回收器将处理它的释放。
Dim szElement As StringDim szArray As New ArrayList ()szElement = "insert-me"szArray.Add (szElement)要检索现有的元素,请将所需元素的索引传递给Item() 方法。
另外,作为一种简写形式,还可以使用圆括号operator (),它实际上映射到Item()方法。
Console.WriteLine (szArray(2))Console.WriteLine (szArray.Item (2))ArrayList类中还有许多其他方法,但是插入和检索都是我们需要在此示例中使用的。