変更できる引数と変更できない引数の違い
更新 : 2007 年 11 月
プロシージャを呼び出すとき、通常はいくつかの引数を渡します。各引数は、基底にあるプログラミング要素に対応します。基底にある要素と引数の両方が、変更できる場合とできない場合があります。
変更できる要素と変更できない要素
プログラミング要素は、値を変更できる変更できる要素と、作成時から値が変更されない 変更できない要素の 2 つに分けられます。
次の表に、変更できるプログラミング要素と変更できないプログラミング要素を挙げます。
変更できる要素 |
変更できない要素 |
---|---|
オブジェクト変数を含むローカル変数 (プロシージャ内で宣言されたもの) 読み取り専用を除く |
読み取り専用変数、フィールド、プロパティ |
フィールド (モジュール、クラス、構造体のメンバ変数) 読み取り専用を除く |
定数とリテラル |
プロパティ、読み取り専用を除く |
列挙型メンバ |
配列要素 |
式 (式内の要素が変更可能な場合も) |
変更できる引数と変更できない引数
変更できる引数は、基底にある要素が変更できるものです。呼び出し元のコードは、いつでも新しい値を格納でき、引数 ByRef を渡すと、プロシージャ内のコードが、呼び出し元のコードにある基底の要素を変更できます。
変更できない引数は、変更できない要素が基底にあるか、ByVal で渡されています。呼び出し元のコードの基底の要素が変更可能な要素であっても、プロシージャはこれを変更できません。基底の要素が変更できない要素である場合、呼び出し元のコード自身もこれを変更できません。
呼び出したプロシージャによって変更できない引数のコピーが変更されることはあっても、その変更が呼び出し元のコードの基の要素に影響することはありません。