VB.net 初心者学習 プロシージャ(Sub,Function)・パラメータ・修飾子(ByVal,ByRef)

IT

VB.net 初心者学習 プロシージャ(Sub,Function)・パラメータ・修飾子(ByVal,ByRef)

Visual Basic初心者でも学習しやすいように解説していきたいと思います。
この記事はVisualBasicを知らない初心者に向けて書いておりますので、説明が多くなっております。
但し、イメージしやすく記載しておりますので参考程度にしてみてください。

私もほぼ初学者ですが、プログラム初心者でもわかりやすいような内容を提供できればと思います。

プロシージャ

プロシージャとは、処理をまとめて呼び出す仕組みのことです。

メソッドとも呼ばれます。

わかりやすく説明するために、信号機を例にしてみます。

信号機の動作は、赤信号になる⇨青信号になる⇨黄色信号になる⇨赤信号になる⇨・・・

をずっと繰り返してますよね。

ここでのプロシージャ、メソッドは赤信号になる(黄信号、青信号)処理のことを指します。

プロシージャには2種類あります。

Sub プロシージャ

Sub プロシージャとは呼び出し元に値を返さないものです。

 

[修飾子] Sub プロシージャ名([修飾子]パラメータ変数名 As データ型)

処理

End Sub

Function プロシージャ

Function プロシージャとは呼び出し元に値を返すものです。

Return文で値を呼び出し元に返しています。

[修飾子] Function プロシージャ名(変数名 As データ型・・・←引数の設定)As データ型←戻り値の設定

   処理内容

   Return 値

End Function

パラメータ

パラメータとは、プロシージャの呼び出し元から受け取ることができる物です。引数とも呼ばれます。

修飾子

修飾子を紹介します。修飾子についてはいくつか種類がありますが、とりあえずこの2種類を説明します。

ByVal:値(Value)で受け取る 

ByRef:参照(reference)を受け取る

プロシージャに以下のように記載します。

Sub プロシージャ名(ByVal(ByRef) 変数名 As データ型)
   処理内容
End Sub

例を挙げて説明してみましょう。

 
Module sample

    Sub Main()
        Dim i As Integer = 2
        Test(i)
        
    End Sub

    Sub Test(ByVal x As Integer)
        x = 11
    End Sub

    
End Module

上記のようなプログラムがあります。

MainプロシージャでTestプロシージャを呼び出しているわけですが、変数iの値をTestプロシージャに渡しています。

つまり、Testプロシージャの中では呼出し元のMainプロシージャの変数iの値を定数として変数xに代入しているわけです。

但しTestプロシージャの処理は変数xに11を代入している処理があるので、値の変化としては、

x=2→x=11となります。

ByRefになると、引数にしている変数i自身もTestプロシージャの処理に伴って変化します。

上記と同じ内容の処理であるならば、

x=i→x=2→x=11→i=11となるわけです。

つまり、引数として渡している変数iもTestプロシージャによって更新されているということです。

 

まとめ

いかがでしょうか。

プロシージャの違い、パラメータ、修飾子の違いについて理解できたでしょうか。

私自身も勉強中ですが、もっとわかりやすく解説していきたいと思います。

コメント

タイトルとURLをコピーしました