値渡し、参照渡し
用語の説明
値渡し…値そのものをコピーして渡す、コピー元の値に影響がない
ポインタ渡し…参照先を渡す、代入するときは注意が必要
参照渡し…変数そのものを渡すイメージ、代入するときは注意
覚えるとどんなメリットがある?
関数やメソッドにオブジェクト型の引数を渡すとき、意図しない値の変更を防げたり、意図的に値を変更したりできる。(特に「意図しない値の変更を防ぐ」は重要)
使用例
VB.Netではメソッドや関数の引数にByVal,ByRefを設定するとポインタ渡しか参照渡しを設定できる。
オブジェクト型で「=」を使用した代入は参照先の値を変更する可能性がある。(シャロ―コピーとも呼ぶ)
代入したいが元の値を変えたくない!という場合は「Clone」という単語を覚えておくと助かることがあるかもしれない。
余談
JavaのList型で参照先の値を変えたくない場合は以下のような解決方法もある。
List<A> list = new Arraylist<>();
List<A> copylist = new ArrayList<A>(list);