- VB.Net 基础教程
- VB.Net - 首页
- VB.Net - 概述
- VB.Net - 环境设置
- VB.Net - 程序结构
- VB.Net - 基本语法
- VB.Net - 数据类型
- VB.Net - 变量
- VB.Net - 常量
- VB.Net - 修饰符
- VB.Net - 语句
- VB.Net - 指令
- VB.Net - 运算符
- VB.Net - 决策制定
- VB.Net - 循环
- VB.Net - 字符串
- VB.Net - 日期和时间
- VB.Net - 数组
- VB.Net - 集合
- VB.Net - 函数
- VB.Net - 子程序
- VB.Net - 类和对象
- VB.Net - 异常处理
- VB.Net - 文件处理
- VB.Net - 基本控件
- VB.Net - 对话框
- VB.Net - 高级窗体
- VB.Net - 事件处理
- VB.Net 高级教程
- VB.Net - 正则表达式
- VB.Net - 数据库访问
- VB.Net - Excel 表格
- VB.Net - 发送邮件
- VB.Net - XML 处理
- VB.Net - Web编程
- VB.Net 有用资源
- VB.Net - 快速指南
- VB.Net - 有用资源
- VB.Net - 讨论
VB.Net - 子程序
正如我们在上一章中提到的,子程序是不返回值的程序。在我们所有的示例中,我们一直在使用子程序 Main。到目前为止,在这些教程中,我们一直在编写控制台应用程序。当这些应用程序启动时,控制权将转到 Main 子程序,然后依次运行构成程序主体的任何其他语句。
定义子程序
Sub 语句用于声明子程序的名称、参数和主体。Sub 语句的语法如下:
[Modifiers] Sub SubName [(ParameterList)] [Statements] End Sub
其中:
修饰符 − 指定程序的访问级别;可能的值包括 - Public、Private、Protected、Friend、Protected Friend 以及有关重载、重写、共享和隐藏的信息。
子程序名 − 指示 Sub 的名称
参数列表 − 指定参数列表
示例
以下示例演示了一个子程序 CalculatePay,它接受两个参数 hours 和 wages,并显示员工的总工资:
Module mysub Sub CalculatePay(ByRef hours As Double, ByRef wage As Decimal) 'local variable declaration Dim pay As Double pay = hours * wage Console.WriteLine("Total Pay: {0:C}", pay) End Sub Sub Main() 'calling the CalculatePay Sub Procedure CalculatePay(25, 10) CalculatePay(40, 20) CalculatePay(30, 27.5) Console.ReadLine() End Sub End Module
编译并执行上述代码后,将产生以下结果:
Total Pay: $250.00 Total Pay: $800.00 Total Pay: $825.00
按值传递参数
这是向方法传递参数的默认机制。在这种机制中,当调用方法时,将为每个值参数创建一个新的存储位置。实际参数的值将复制到其中。因此,对方法内部参数所做的更改不会影响参数。
在 VB.Net 中,您可以使用ByVal关键字声明引用参数。以下示例演示了此概念:
Module paramByval Sub swap(ByVal x As Integer, ByVal y As Integer) Dim temp As Integer temp = x ' save the value of x x = y ' put y into x y = temp 'put temp into y End Sub Sub Main() ' local variable definition Dim a As Integer = 100 Dim b As Integer = 200 Console.WriteLine("Before swap, value of a : {0}", a) Console.WriteLine("Before swap, value of b : {0}", b) ' calling a function to swap the values ' swap(a, b) Console.WriteLine("After swap, value of a : {0}", a) Console.WriteLine("After swap, value of b : {0}", b) Console.ReadLine() End Sub End Module
编译并执行上述代码后,将产生以下结果:
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200
它表明尽管值在函数内部已更改,但值并没有改变。
按引用传递参数
引用参数是变量内存位置的引用。当您按引用传递参数时,与值参数不同,不会为这些参数创建新的存储位置。引用参数表示与提供给方法的实际参数相同的内存位置。
在 VB.Net 中,您可以使用ByRef关键字声明引用参数。以下示例演示了这一点:
Module paramByref Sub swap(ByRef x As Integer, ByRef y As Integer) Dim temp As Integer temp = x ' save the value of x x = y ' put y into x y = temp 'put temp into y End Sub Sub Main() ' local variable definition Dim a As Integer = 100 Dim b As Integer = 200 Console.WriteLine("Before swap, value of a : {0}", a) Console.WriteLine("Before swap, value of b : {0}", b) ' calling a function to swap the values ' swap(a, b) Console.WriteLine("After swap, value of a : {0}", a) Console.WriteLine("After swap, value of b : {0}", b) Console.ReadLine() End Sub End Module
编译并执行上述代码后,将产生以下结果:
Before swap, value of a : 100 Before swap, value of b : 200 After swap, value of a : 200 After swap, value of b : 100
广告