パラメータ配列
更新 : 2007 年 11 月
通常は、プロシージャ宣言で指定されているより多くの引数を使ってプロシージャを呼び出すことはできません。不特定多数の引数が必要な場合は、パラメータ配列を宣言すると、値の配列をプロシージャのパラメータとして渡すことができます。プロシージャを定義するときには、パラメータ配列の要素の数がわからなくてもかまいません。配列のサイズは、プロシージャの呼び出しごとに個別に決定されます。
ParamArray を宣言する
パラメータ リストでパラメータ配列を指定するには、ParamArray キーワードを使用します。次の規則が適用されます。
プロシージャはパラメータ配列を 1 つだけ定義でき、これはプロシージャの定義の最後のパラメータである必要があります。
パラメータ配列は値渡しで渡す必要があります。プロシージャ定義で ByVal キーワードを使って明示的に指定することをお勧めします。
パラメータ配列は自動的に省略可能になります。既定値は、パラメータ配列の要素型の空の 1 次元配列です。
パラメータ配列より前には、必須のパラメータだけを指定します。省略可能なパラメータはパラメータ配列だけであることが必要です。
詳細については、「方法 : 不特定数のパラメータを受け取るプロシージャを定義する」を参照してください。
ParamArray を呼び出す
パラメータ配列を定義するプロシージャを呼び出す場合、引数は次のいずれかの方法で渡します。
なし。ParamArray 引数は省略できます。この場合は、空の配列がプロシージャに渡されます。Nothing (Visual Basic) キーワードを渡しても同じ結果になります。
コンマで区切った任意の数の引数のリスト。各引数のデータ型は、暗黙的に ParamArray 要素型に変換できる必要があります。
パラメータ配列と同じ要素型の配列
いずれの場合も、プロシージャ内のコードでは、各要素が ParamArray データ型と同じデータ型の 1 次元配列として、パラメータ配列を扱う必要があります。
詳細については、「方法 : 不特定数のパラメータを受け取るプロシージャを呼び出す」を参照してください。
セキュリティに関するメモ : |
---|
無限に増大する配列を扱う場合、アプリケーション内部の容量を超過してしまう可能性があります。パラメータ配列を受け取る場合は、呼び出し元のコードが渡した配列のサイズをテストする必要があります。このサイズがアプリケーションには大きすぎる場合、適切な手順を行う必要があります。詳細については、「方法 : 配列のサイズを決定する」を参照してください。 |