- 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 - 网页编程
- VB.Net 有用资源
- VB.Net - 快速指南
- VB.Net - 有用的资源
- VB.Net - 讨论
VB.Net - 子程序
正如我们在上一章中提到的,Sub 过程是不返回任何值的过程。我们在所有示例中都使用了 Sub 过程 Main。到目前为止,我们一直在这些教程中编写控制台应用程序。当这些应用程序启动时,控制权转到 Main Sub 过程,然后它依次运行构成程序主体的任何其他语句。
定义子过程
Sub语句用于声明子过程的名称、参数和主体。Sub 语句的语法是 -
[Modifiers] Sub SubName [(ParameterList)] [Statements] End Sub
在哪里,
修饰符- 指定过程的访问级别;可能的值为 - Public、Private、Protected、Friend、Protected Friend 以及有关重载、覆盖、共享和隐藏的信息。
SubName - 表示子的名称
ParameterList - 指定参数列表
例子
以下示例演示了一个子过程CalculatePay,它采用两个参数小时和工资并显示员工的总工资 -
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