工具搜索引擎 加入收藏
意见反馈
帮助中心
繁體中文
首页 工具超市 产品信息 资讯中心 工具黄页 站长工具 实用工具 会员管理 联系我们  
广告投放
您当前的位置:工具网站长书库> vb2005教程

过程 (Procedure) - 子例程 (Sub) 和函数 (Function)

什么是过程 (Procedure)

过程是可以从其它代码块中运行的自我包含的代码块。简单地说,就是通知程序执行某项操作的一段代码。

你在前面课程中的示例,已经使用到了过程,比如 MessageBox.Show 就是一个内置过程,该过程用来弹出一个消息对话框。

Visual Basic 2005 提供了很多内置过程来执行常见的操作,但是总会有一些情况,你希望程序执行内置过程无法处理的操作。这时候,你就需要自己编写过程来完成此任务。另外,自己编写过程也有利于你代码的复用。

过程有两种,一种叫子例程 (Subroutine),我们通常叫做 Sub;另外一种叫函数,通常叫 Function。

子例程 (Sub)

用 Sub 表示子例程开始,用 End Sub 表示子例程结束。下面的一段代码就是一个子例程:

Private Sub ShowYearOfNow
Dim theDate As Date = Now
MessageBox.Show(theDate.Year, "Show Year")
End Sub

我们用下面的示例,演示如何调用这个子例程。

打开 Visual Studio。在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序 (Windows Application)。在名称 (Name) 框中键入 Procedure,再单击确定 (OK)。

单击工具箱 (Toolbox) 里的按钮 (Button) 控件,按住鼠标将其拖放到 Form 1 上。然后在属性 (Properties) 窗口内将其 Name 属性改为 btnCall,将其 Text 属性设为 Call。然后双击该按钮,显示代码编辑器 (Code Editor)。加入代码,使其显示如下

Public Class Form1
    Private Sub btnCall_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnCall.Click
        ShowYear()
    End Sub
 
    Private Sub ShowYear()
        Dim theDate As Date = Now
        MessageBox.Show(theDate.Year, "Show Year")
    End Sub
 
End Class

选择调试 (Debug) 菜单中的 开始调试 (Start Debugging),运行该程序。或者直接按快捷键 F5 运行。

会弹出一个消息框,消息框中写着当前日期的年份。按确认 (OK) 即可关闭消息框。

你可以看到,在 btnCall_Click 事件里调用了 ShowYear 这个子例程。你也许会想,为什么不将  ShowYear 这个子例程里的两行代码直接写入 btnCall_Click 事件,变成下面那样:

    Private Sub btnCall_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnCall.Click
        Dim theDate As Date = Now
        MessageBox.Show(theDate.Year, "Show Year")
   End Sub

这就要讲到代码的复用。假设有一个过程有 50 行代码,你需要在程序中有 100 次用到这个过程,你只要写一个过程,然后每次程序需要用到时调用这个例程就行了,而不用在程序的 100 个地方写相同的代码了。同样,将相同功能的代码块构成一个过程也有助于代码的维护和修改。试想,如果你分别在程序 100 个地方写了相同的代码,结果发现需要修改,你岂不是要修改 100 处?而用了过程,你只要修改一处就行了。

函数 (Function)

函数和子例程都是过程,其不同之处在于子例程只执行操作,没有返回值。而函数则有返回值。

用上面的示例修改一下,变成如下代码。你可以看到,函数 GetYear 返回一个 Integer 值。

Public Class Form1
 
    Private Sub btnCall_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnCall.Click
        Dim theYear As Integer
        theYear = GetYear()
        MessageBox.Show(theYear, "Show Year")
    End Sub
 
    Private Function GetYear() As Integer
        Dim theDate As Date = Now
        Return theDate.Year
    End Function
End Class

在上述代码中,函数 GetYear 有返回值,返回值数据类型为 Integer。

用 Function 表示函数开始,用 End Function 表示函数结束,并且函数的返回值应指定其数据类型,例如 Function GetYear() As Integer 的 As Integer 指定了函数返回值是 Integer 类型的。

Sub 和 Function 的区别

两者区别在于,Sub 只执行操作,没有返回值;Function 不但执行操作,并且有返回值。

Sub 和 Function 中的参数

有时你要为过程提供一些信息。通过参数,你可以将这些信息传递给过程。比如你可以写一个函数,给予两个参数,一个参数是长,一个参数是宽,然后求出面积。

    Private Function GetArea(ByVal length As Integer, _
    ByVal width As Integer) As Integer
        Return length * width
    End Function

在过程声明中,参数在紧跟着过程名的括号中声明。每个参数一般都有 ByVal 关键字,如果你不添加 ByVal 关键字,Visual Basic 会自动添加它。As 关键字用来声明参数的数据类型。

编者:woyouxian[at]gmail[点]com

参考:微软 MSDN --> Visual Basic Guided Tour --> Introduction to the Visual Basic Programming Language --> Making Your Computer Do Something: Writing Your First Procedure

时间:2006-12-3

返回上级目录
VB 2005 入门教程
安装 VB 2005
一个简单的 VB 2005 程序
什么是编程语言
什么是变量
数据类型概要

数据类型 - 整数和浮点数
数据类型 - 字符串
数据类型 - 日期
过程 - 子例程和函数
If...Then...Else 条件语句
Select...Case 条件语句
For...Next 循环语句