VB.NET クラスのメソッドのサンプル

VB.NETのクラスのメソッドのサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

値渡し(ByVal)

  • 値渡しは、メソッドを呼び出す時に値をコピーして渡します。
    そのためメソッドの中で値が変化しても元の値には影響ありません。
  • ByValは、値渡しを行うときのキーワードです。
  • ByValがない場合も値渡しになります。
'クラス
Public Class Class1
    Sub print1(ByVal a, ByVal b) 'メソッド ByVal 
        Console.WriteLine(a + b) '3と出力される
    End Sub
End Class
'メイン
Module Module1
    Sub Main()
        Dim num1 As Integer = 1
        Dim num2 As Integer = 2

        Dim c1 As New Class1
        c1.print1(num1, num2) 'メソッドを呼び出す

        Console.WriteLine(num1) '1と出力される
        Console.WriteLine(num2) '2と出力される
    End Sub
End Module

2~6行目は、Class1というクラスです。
3行目は、メソッドで引数にByValがついています。値渡しになります。
13行目は、クラスをインスタンス化しています。
14行目は、メソッドの引数として値を2つ渡しています。
16,17行目は、10,11行目と同じ値が表示されます。

参照渡し(ByRef)

  • 参照渡しは、メソッドを呼び出す時にアドレスをコピーして渡します。
    そのためメソッドの中で値が変化すると元の値も変更されます。
  • 参照渡しを行う時は、refキーワードを追加します。
'クラス
Public Class Class1
    Sub print1(ByRef a, ByRef b) 'メソッド ByRef 
        a = a + 10
        b = b + 10
        Console.WriteLine(a + b) '23と出力される
    End Sub
End Class
'メイン
Module Module1
    Sub Main()
        Dim num1 As Integer = 1
        Dim num2 As Integer = 2

        Dim c1 As New Class1
        c1.print1(num1, num2) 'メソッドを呼び出す

        Console.WriteLine(num1) '11と出力される
        Console.WriteLine(num2) '12と出力される
    End Sub
End Module

2~8行目は、Class1というクラスです。
3行目は、メソッドで引数にByRefがついています。参照渡しになります。
4,5行目は、引数として渡された値に加算しています。
15行目は、クラスをインスタンス化しています。
16行目は、メソッドの引数として値を2つ渡しています。
18,19行目は、12,13行目とは異なる値が表示されます
→4,5行目で加算された値が表示されます。

戻り値あり(Function)

クラスのメソッドに戻り値があるサンプルです。
メソッドの前にFunctionをつけます。

'クラス
Public Class Class1
    Function print1(ByVal a, ByVal b) 'メソッド Function 
        Return a + b
    End Function
End Class
'メイン
Module Module1
    Sub Main()
        Dim num1 As Integer = 1
        Dim num2 As Integer = 2

        Dim c1 As New Class1
        Console.WriteLine(c1.print1(num1, num2)) '3と出力される
    End Sub

End Module

3行目は、メソッドの前にFunctionがついています。Javaのようにメソッド名の前に戻り値の型はありません。
4行目は、Returnで値を返します。

戻り値なし(Sub)

クラスのメソッドに戻り値がないサンプルです。
メソッドの前にSubをつけます。

'クラス
Public Class Class1
    Sub print1(ByVal a, ByVal b) 'メソッド Sub 
        Console.WriteLine(a + b) '3と出力される
    End Sub
End Class
'メイン
Module Module1
    Sub Main()
        Dim c1 As New Class1
        c1.print1(1, 2)
    End Sub
End Module

3行目は、メソッドの前にSubがついています。
4行目は、Returnがありません。

可変長引数のメソッド

可変長引数のメソッドのサンプルです。

'クラス
Public Class Class1
    Sub Test(ByVal ParamArray moji() As String) '可変長の引数に対応
        For Each a As String In moji
            Console.WriteLine(a)
        Next
    End Sub
End Class
'メイン
Module Module1
    Sub Main()
        Dim c1 As New Class1
        c1.Test("あ") 'あ
        c1.Test("い", "う") 'いう
        c1.Test() '出力なし
    End Sub
End Module

3行目は、パラメーター配列のParamArrayキーワードです。可変長の引数に対応します。
13行目は、引数の数が1つです。出力されます。
14行目は、引数の数が2つです。出力されます。
5行目は、引数がありませんがエラーになりません。

以下はMicrosoftのパラメーター配列のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/procedures/parameter-arrays

関連の記事

VB.NET入門 クラスの仕組みとサンプル
VB.NET クラスの継承の仕組みとサンプル

△上に戻る