パラメータの一覧
更新 : 2007 年 11 月
呼び出し時に、プロシージャが受け取ることのできるパラメータを指定します。複数のパラメータを指定するときは、コンマ (,) で区切ります。パラメータを 1 つ定義する場合の構文は次のとおりです。
[ <attributelist> ] [ Optional ] [{ ByVal | ByRef }] [ ParamArray ]
parametername[( )] [ As parametertype ] [ = defaultvalue ]
指定項目
attributelist
省略可能です。このパラメータに適用する属性の一覧を指定します。属性リストは山かっこ ("<" および ">") で囲む必要があります。Optional
省略可能です。プロシージャを呼び出すときに、このパラメータを省略できることを示します。ByVal
省略可能です。呼び出し元のコードにある、対応する引数の基になる可変要素を、プロシージャが置き換えたり再割り当てしたりできないことを示します。ByRef
省略可能です。呼び出し元のコードにある基の可変要素を、呼び出し元のコード自体と同じようにプロシージャが変更できることを示します。ParamArray
省略可能です。パラメータ リストの最後のパラメータが、指定されたデータ型の省略可能な要素の配列であることを示します。これを指定すると、呼び出し元のコードから任意の数の引数をプロシージャに渡すことができます。parametername
必ず指定します。パラメータを表すローカル変数の名前を指定します。parametertype
Option Strict が On の場合は、必ず指定します。パラメータを表すローカル変数のデータ型を指定します。defaultvalue
Optional パラメータの場合は必ず指定します。任意の定数、または結果がパラメータのデータ型になる定数式を指定します。型が Object、つまりクラス、インターフェイス、配列、または構造体の場合、既定値に指定できるのは Nothing だけです。
解説
パラメータはかっこで囲み、コンマで区切って指定します。パラメータはどのデータ型でも宣言できます。parametertype を指定しなかった場合は、既定値の Object に設定されます。
呼び出し元のコードはプロシージャを呼び出すとき、各必須パラメータに引数を渡します。詳細については、「パラメータと引数の違い」を参照してください。
呼び出し元のコードが各パラメータに渡す引数は、呼び出し元のコードにある基の要素へのポインタです。この要素が不変 (定数、リテラル、列挙値、または式) である場合、どのコードからも要素を変更できません。要素が可変 (宣言された変数、フィールド、プロパティ、配列要素、構造体要素) である場合は、呼び出し元のコードから要素を変更できます。詳細については、「変更できる引数と変更できない引数の違い」を参照してください。
可変要素が ByRef で渡された場合は、プロシージャからも要素を変更できます。詳細については、「引数の値渡しと参照渡しの違い」を参照してください。
ルール
**かっこ。**パラメータ リストを指定する場合は、かっこで囲む必要があります。パラメータを指定しない場合でも、空のリストをかっこで囲むことができます。こうすると、プロシージャであると明確に示すことができるので、コードが読みやすくなります。
**省略可能なパラメータ。**パラメータに Optional 修飾子を指定すると、リスト内の後続のすべてのパラメータにも Optional 修飾子を使用し、オプションで宣言することが必要になります。
省略可能なパラメータの宣言には、それぞれ defaultvalue 句を指定する必要があります。
**パラメータ配列。**ParamArray パラメータには、ByVal を指定する必要があります。
同じパラメータ リストに Optional と ParamArray の両方を指定することはできません。
**値渡し。**既定では、すべての引数が ByVal で渡されます。つまり、プロシージャは基になる可変要素を変更できません。ただし、要素が参照型であれば、プロシージャは基になるオブジェクトの内容やメンバを更できます (オブジェクト自体を置き換えたり再割り当てしたりすることはできません)。
**パラメータ名。**パラメータのデータ型が配列である場合は、parametername のすぐ後にかっこを記述します。パラメータ名の詳細については、「宣言された要素の名前」を参照してください。
使用例
パラメータが 2 つ定義された Function プロシージャの例は、次のようになります。
Public Function howMany(ByVal ch As Char, ByVal st As String) As Integer
End Function
Dim howManyA As Integer = howMany("a"c, "How many a's in this string?")
参照
処理手順
概念
参照
Function ステートメント (Visual Basic)