投稿者 tecc  (社会人) 投稿日時 2010/3/12 19:30:11
構造体とクラスについてです。宜しく御願いします。
初歩的な事で大変申し訳ないのですが教えて下さい。
using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            MyStruct ms1 = new MyStruct();
            MyStruct ms2;

            ms1.x = 20;
            ms2 = ms1;
            Console.WriteLine("ms2.x = {0}", ms2.x);
            ms2.x = 10;
            Console.WriteLine("ms1.x = {0}", ms1.x);

            MyClass mc1 = new MyClass();
            MyClass mc2;

            mc1.x = 20;
            mc2 = mc1;
            Console.WriteLine("mc2.x = {0}", mc2.x);
            mc2.x = 10;
            Console.WriteLine("mcc1.x = {0}", mc1.x);
        }
    }
}

struct MyStruct
{
    public int x;
}

class MyClass
{
    public int x;
}


mc1.x = 20;
mc2 = mc1;
Console.WriteLine("mc2.x = {0}", mc2.x);
mc2.x = 10;
Console.WriteLine("mc1.x = {0}", mc1.x);

上記のコードの時、mc1.xは20と表示されなければならないと一瞬思ってしまいました。
が、実際は10でした。

そこで考えたのが mc2 の中に mc1 がありその値に対してmc2.x = 10と代入されるので mc1.x = 10 となる

という事だろうと判断しました。がこの考えであってますでしょうか?