前提・実現したいこと
参照型の値渡しをした際の挙動について質問です。
下記のようなコードがある場合、
関数呼び出し時に、新たに仮引数a,b分のメモリを確保し、
そこに変数hogeとhugaのアドレスがコピーされるという認識でいます。
そうするとhugaのアドレスが入っているbをaに代入したら
a.xは20になるように見てえしまうのですが、
なぜa.x=10のままになるのでしょうか?
(hogeとhoge.xで使っているメモリが違うのでしょうか?)
どなたかご教示ください。
宜しくお願い致します。
該当のソースコード
C#
1using System; 2 3class Test 4{ 5 class Hoge{public int x;} 6 7 public static void Main() 8 { 9 var hoge = new Hoge(); 10 hoge.x=1; 11 var huga = new Hoge(); 12 huga.x=2; 13 Cal(hoge,huga); 14 Console.WriteLine(hoge.x);//10 15 Console.WriteLine(huga.x);//20 16 } 17 18 static void Cal(Hoge a,Hoge b) 19 { 20 a.x=10; 21 b.x=20; 22 a=b; 23 } 24 25}
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 11:00
2018/07/27 12:37
2018/07/27 12:39
2018/07/27 12:43
2018/07/28 04:56
2018/07/28 06:33