VB.Net函数

一个过程是一组语句,在调用时一起执行任务。过程执行后,控制权返回到调用过程的语句。 VB.Net有两种类型的程序:

  • 函数
  • 子程序或Subs

重要区别: 函数返回一个值,而Subs不返回任何一个值。

定义函数

Function语句用于声明函数的名称,参数和函数体。Function语句的语法是:

[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
    [Statements]
End Function

其中,

  • Modifiers - 指定函数的访问级别; 可能的值有:Public, Private, Protected, Friend, Protected Friend以及有关重载,覆盖,共享和投影的信息。
  • FunctionName - 表示函数的名称。
  • ParameterList: 指定参数的列表。
  • ReturnType: 指定函数返回的变量的数据类型。

示例

下面的代码片段显示了一个函数:FindMax,它取两个整数值作为参数并返回两个中较大的那一个。

Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
   ' local variable declaration '
   Dim result As Integer
   If (num1 > num2) Then
       result = num1
   Else
       result = num2
   End If
   FindMax = result
End Function

函数返回值

在VB.Net中,函数可以通过两种方式将值返回给调用代码:

  • 通过使用return语句
  • 通过赋值给函数名称

以下示例演示如何使用FindMax函数:

Module FunctionReturnValue
   Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
      ' local variable declaration '
      Dim result As Integer
      If (num1 > num2) Then
          result = num1
      Else
          result = num2
      End If
      FindMax = result
   End Function
   Sub Main()
      Dim a As Integer = 100
      Dim b As Integer = 200
      Dim res As Integer
      res = FindMax(a, b)
      Console.WriteLine("Max value is : {0}", res)
      Console.ReadLine()
   End Sub
End Module

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\function>vbc FunctionReturningValue.vb
F:\worksp\vb.net\function>FunctionReturningValue.exe
Max value is : 200

递归函数

一个函数可以调用它自己(自身),这被称为递归函数。以下是一个使用递归函数计算给定数字的阶乘的示例:

Module Recursive
   Function factorial(ByVal num As Integer) As Integer
      ' local variable declaration '
      Dim result As Integer
      If (num = 1) Then
          Return 1
      Else
          result = factorial(num - 1) * num
          Return result
      End If
   End Function
   Sub Main()
      'calling the factorial method '
      Console.WriteLine("Factorial of 6 is : {0}", factorial(6))
      Console.WriteLine("Factorial of 7 is : {0}", factorial(7))
      Console.WriteLine("Factorial of 8 is : {0}", factorial(8))
      Console.ReadLine()
   End Sub
End Module

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\function>vbc Recursive.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\function>Recursive.exe
Factorial of 6 is : 720
Factorial of 7 is : 5040
Factorial of 8 is : 40320

参数数组

有时,在声明一个函数或子过程的时候,有时不确定传递的参数的数量。 VB.Net参数数组(或参数数组)可以解决这个问题。

以下示例演示了这一点:

Module ParamArrays
   Function AddElements(ParamArray arr As Integer()) As Integer
      Dim sum As Integer = 0
      Dim i As Integer = 0
      For Each i In arr
          sum += i
      Next i
      Return sum
   End Function
   Sub Main()
      Dim sum As Integer
      sum = AddElements(111, 720, 222, 567, 999)
      Console.WriteLine("The sum is: {0}", sum)
      Console.ReadLine()
   End Sub
End Module

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\function>vbc ParamArrays.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\function>ParamArrays.exe
The sum is: 2619

将数组作为函数参数传递

可以在VB.Net中传递一个数组作为函数的参数。以下示例演示了这一点:

Module PassingArrays
   Function getAverage(ByVal arr As Integer(), ByVal size As Integer) As Double
      'local variables'
       Dim i As Integer
       Dim avg As Double
       Dim sum As Integer = 0
       For i = 0 To size - 1
           sum += arr(i)
       Next i
       avg = sum / size
       Return avg
    End Function
    Sub Main()
        ' an int array with 5 elements '
        Dim balance As Integer() = {1110, 210, 320, 179, 509}
        Dim avg As Double
        'pass pointer to the array as an argument 
        avg = getAverage(balance, 5)
        ' output the returned value '
        Console.WriteLine("Average value is: {0} ", avg)
        Console.ReadLine()
    End Sub
End Module

执行上面示例代码,得到以下结果 -

F:\worksp\vb.net\function>vbc PassingArrays.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\function>PassingArrays.exe
Average value is: 465.6

猿狮妹
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 控件都
  • Copyright © 2021 猿狮院, All rights reserved.