C#でも同じようなことをやったような?
忘れがちなことの自分用備忘録!適宜更新!
メソッドの引数はすべて値渡しである
プリミティブ型であろうがオブジェクトの参照渡しだろうが、引数に代入をしてもコール元には影響を与えない!
public void func1( Puyo puyo ) { puyo = redpuyo; // コール元に影響は与えない! } public void func2( int[] array ) { array = another_array; // もちろんコール元に影響は与えない! }
影響を与えるのは、そのメンバを更新したときである。
C++のポインタ渡し(これもポインタのコピー、つまり値渡し)と同じですね。
public void func3( Puyo puyo ) { puyo.color = RED; // コール元のオブジェクトのcolorの値も変わる! }
ややこしいイメージがあったけど、非常にシンプルですね。
C#のrefやoutキーワードみたいなのはないのかな?