VB.NETでメソッドを作成していると、引数を複数受け取りたいケースがあります。
そのような場合に、ParamArray(パラメーター配列)を使用すると、呼び出し側は配列を意識せずに複数の値を渡せるようになり、メソッド内部では配列として受け取れます。
この記事では、VB.NETのメソッドの引数を配列として受け取りたい場合に利用する ParamArray の基本的な使い方と、実務での活用例を紹介します。
目次
ParamArray(パラメーター配列)とは
ParamArray(パラメーター配列)は、複数の引数を配列として受け取るためのキーワードです。
通常の配列引数では、呼び出し側で配列を作成して渡す必要がありますが、ParamArray を使用すると、複数の値をカンマ区切りで指定できます。
通常の配列引数は、呼び出し時に配列を作成して渡します。
Sub PrintMessages(messages() As String)
End Sub
PrintMessages({"A", "B", "C"})
一方、ParamArray を使用すると、呼び出し側で配列を意識する必要がありません。
Sub PrintMessages(ParamArray messages() As String)
End Sub
PrintMessages("A")
PrintMessages("A", "B")
PrintMessages("A", "B", "C")
実務でよくある使い方
ログ出力
以下は、ログ出力の例です。
Sub WriteLog(ParamArray messages() As String)
Console.WriteLine(String.Join(" | ", messages))
End Sub
呼び出し側
LogWrite("処理開始")
LogWrite("ユーザーID:1001", "ログイン成功")
LogWrite("データ更新", "正常終了")
実行結果
処理開始
ユーザーID:1001 | ログイン成功
データ更新 | 正常終了
SQL文の生成
以下は、SQL文のWHERE句を組み立てる例です。
Function CreateSQL(ParamArray conditions() As String) As String
If conditions.Length = 0 Then
Return String.Empty
End If
Return " AND " & String.Join(" AND ", conditions)
End Function
呼び出し側
Dim strSQL As String
Dim strWhere As String
strSQL = "SELECT * FROM emptbl WHERE 1 = 1"
strWhere = CreateSQL(
"DelFlg = 0",
"Status = 1",
"Price > 1000"
)
strSQL &= strWhere
Console.WriteLine(strSQL)
実行結果
SELECT * FROM emptbl WHERE 1 = 1 AND DelFlg = 0 AND Status = 1 AND Price > 1000
まとめ
ParamArrayを使用すると、呼び出し元は配列を明示的に作成する必要がなく、可変個の引数を自然なメソッド呼び出し形式で渡せます。
メソッド内部では通常の配列として扱われるため、柔軟で簡潔なプログラムが実装できます。
以上、VB.NETのメソッドの引数を配列として受け取りたい場合に利用する ParamArray の基本的な使い方と、実務での活用例について解説しました。