当方、C#にて趣味プログラマーをしております。
今回、C#における参照型の振舞いについて、質問させていただきます。
開発環境 : Microsoft Visual Studio Community 2015
###試したこと
参照型への代入について調べるため、下記のテストコードを実行しました。
C#
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 MyClass a = new MyClass("A"); 6 MyClass b = new MyClass("B"); 7 MyClass c = new MyClass("C"); 8 9 a = c; 10 c = b; 11 12 Console.WriteLine("a = " + a.Name); 13 Console.WriteLine("b = " + b.Name); 14 Console.WriteLine("c = " + c.Name); 15 16 Console.ReadKey(); 17 } 18 } 19 20 class MyClass 21 { 22 public string Name { get; private set; } 23 24 public MyClass(string name) 25 { 26 Name = name; 27 } 28 }
結果は、
a = C b = B c = B
となりました。
たとえば、b=a;c=b;としたときに、bにはaへの参照が、cにはbの参照が入るため、
中身はすべて"A"になるので、
上記テストコードの場合、a=cでaにはcへの参照が、c=bでcにはbへの参照が入るため、
中身はすべて”B”になるのでは?と思いました。
しかし実際には、aの中身は"C"でした。
###質問内容
上記のような事が起きる理由・仕組みを知りたいです。
初歩的な質問かもしれませんが、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/02 10:15