Vb.net-subs

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

VB.Net-サブ手順

前の章で述べたように、Subプロシージャは値を返さないプロシージャです。 すべての例でSubプロシージャMainを使用しています。 これらのチュートリアルでは、これまでにコンソールアプリケーションを作成しています。 これらのアプリケーションが起動すると、コントロールはMain Subプロシージャに進み、プログラムの本体を構成する他のステートメントを実行します。

サブプロシージャの定義

*Sub* ステートメントは、サブプロシージャの名前、パラメーター、および本体を宣言するために使用されます。 Subステートメントの構文は次のとおりです-
[Modifiers] Sub SubName [(ParameterList)]
   [Statements]
End Sub

どこで、

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

次の例は、2つのパラメータ_hours_および_wages_を取り、従業員の合計給与を表示するSubプロシージャ_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