Vb.net-functions

提供:Dev Guides
移動先:案内検索

VB.Net-関数

プロシージャは、呼び出されたときに一緒にタスクを実行するステートメントのグループです。 プロシージャが実行された後、コントロールはプロシージャを呼び出すステートメントに戻ります。 VB.Netには2種類の手順があります-

  • 関数
  • サブ手順またはサブ

関数は値を返しますが、Subsは値を返しません。

関数を定義する

Functionステートメントは、関数の名前、パラメーター、および本体を宣言するために使用されます。 Functionステートメントの構文は次のとおりです-

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

どこで、

  • Modifiers -関数のアクセスレベルを指定します。可能な値は、Public、Private、Protected、Friend、Protected Friend、およびオーバーロード、オーバーライド、共有、シャドウイングに関する情報です。
  • FunctionName -関数の名前を示します
  • ParameterList -パラメータのリストを指定します
  • ReturnType -関数が返す変数のデータ型を指定します

次のコードスニペットは、2つの整数値を取り、2つのうち大きい方を返す関数_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では、関数は2つの方法で呼び出し元のコードに値を返すことができます-

  • returnステートメントを使用して *関数名に値を割り当てることにより

次の例は、_FindMax_関数の使用方法を示しています-

Module myfunctions
   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

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Max value is : 200

再帰関数

関数はそれ自体を呼び出すことができます。 これは再帰として知られています。 以下は、再帰関数を使用して、指定された数値の階乗を計算する例です-

Module myfunctions
   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

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 is: 40320

パラメータ配列

関数またはサブプロシージャを宣言しているときに、パラメータとして渡される引数の数がわからない場合があります。 VB.Netのパラメーター配列(またはパラメーター配列)は、これらのときに役立ちます。

次の例はこれを示しています-

Module myparamfunc
   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(512, 720, 250, 567, 889)
      Console.WriteLine("The sum is: {0}", sum)
      Console.ReadLine()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

The sum is: 2938

配列を関数の引数として渡す

VB.Netで関数の引数として配列を渡すことができます。 次の例はこれを示しています-

Module arrayParameter
   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() = {1000, 2, 3, 17, 50}
      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

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Average value is: 214.4