VB.Net子程序(Sub)
在前面的章节中提到:子程序是不返回任何值的程序。到目前为止,在前面所有的例子中一直使用子过程Main
。 在这些教程中,我们一直在编写控制台应用程序。当这些应用程序启动时,控制权转移到Main Sub过程,然后运行构成程序主体的任何其他语句。
定义子程序
Sub
语句用于声明子过程的名称,参数和过程主体。 Sub
语句的语法是:
[Modifiers] Sub SubName [(ParameterList)] [Statements] End Sub
其中,
- Modifiers:指定过程的访问级别; 可能的值有:
Public
,Private
,Protected
,Friend
,Protected Friend
以及有关重载,覆盖,共享和投影的信息。 - SubName : 表示
Sub
的名称 - ParameterList : 指定参数的列表
示例
下面的示例演示了一个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, 100) CalculatePay(40, 200) CalculatePay(30, 275) Console.ReadLine() End Sub End Module
当上面的代码被编译并执行时,会产生以下结果:
F:\worksp\vb.net\sub>vbc mysub.vb Microsoft (R) Visual Basic Compiler version 14.0.1038 for Visual Basic 2012 Copyright (c) Microsoft Corporation. All rights reserved. ...... F:\worksp\vb.net\sub>mysub.exe Total Pay: ¥2,500.00 Total Pay: ¥8,000.00 Total Pay: ¥8,250.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
执行上面示例代码,得到以下结果 -
F:\worksp\vb.net\sub>vbc paramByval.vb Microsoft (R) Visual Basic Compiler version 14.0.1038 for Visual Basic 2012 Copyright (c) Microsoft Corporation. All rights reserved. ...... F:\worksp\vb.net\sub>paramByval.exe 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
执行上面示例代码,得到以下结果 -
F:\worksp\vb.net\sub>vbc paramByref.vb Microsoft (R) Visual Basic Compiler version 14.0.1038 for Visual Basic 2012 Copyright (c) Microsoft Corporation. All rights reserved. ...... F:\worksp\vb.net\sub>paramByref.exe Before swap, value of a : 100 Before swap, value of b : 200 After swap, value of a : 200 After swap, value of b : 100
猿狮妹
2023-03-13
VB
Net
子程序
编程课程
热门教程
1 VB.Net教程
VB.Net是Microsoft开发的一种简单的,现代的,面向对象的计算机编程语言,它将.NET Framework和公共语言运行时的强大功能与Visual Basic的优势相结合。本教程将介绍和讲解基本的VB.Net编程,并讲解各种有关VB.Net编程语言的基础、高级概念。
2 VB.Net Excel工作表
VB.Net支持Microsoft Excel 2010的COM对象模型和应用程序之间的互操作性。
要应用程序中使用这种互操作性,需要在Windows窗体应用程序中导入名称空间Microsoft
3 VB.Net程序结构
在学习VB.Net编程语言的基本构建块之前,先来看看一个最基本的VB.Net程序结构,以便可以在以后的章节中作为参考来理解程序代码块。
VB.Net Hello World示
4 VB.Net开发环境安装配置
在本章中,我们将讨论和学习可用于创建VB.Net应用程序的工具。
我们已经提到,VB.Net是.Net框架的一部分,用于编写.Net应用程序。 因此,在讨论用于运
5 VB.Net子程序(Sub)
在前面的章节中提到:子程序是不返回任何值的程序。到目前为止,在前面所有的例子中一直使用子过程Main。 在这些教程中,我们一直在编写控制台应
6 VB.Net第一个程序(Helloworld)
为了演示如何使用VS 2017创建一个简单的VB.net应用程序,这里将使用VS 2017来创建一个简单的“Hello,World”的控制台应用应用程序。这个例子将使用VB.NET
7 VB.Net数据类型
数据类型是指用于声明不同类型的变量或函数的扩展系统。变量的类型决定了它在存储器中占用多少空间以及如何解释存储的位模式。
VB.Net数据类型VB.
8 VB.Net类和对象
当定义一个类时,就定义了一个数据类型的蓝图(或模板)。这实际上并没有定义任何数据,但它确实定义了类名和含义,即该类的一个对象将包含哪些内
9 VB.Net正则表达式
正则表达式是可以与输入文本进行匹配的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符文字,运算符或构造组成。
用
10 VB.Net基本控件
对象是通过使用工具箱控件在Visual Basic 窗体上创建的一种用户界面元素。 实际上,在Visual Basic中,窗体(Form)本身就是一个对象。 每个Visual Basic 控件都