クラスの作成


namespace CSharpLearningClass
{
    class Sample1
    {
        //これがクラス
        //オブジェクトの型を定義している
        class Customer
        {
            public int ID { get; set; }                 //これらがエンティティ
            public string Name { get; set; }            //これらがエンティティ
             //暗黙的なValueTypeの派生クラスとして文字表示をオーバーライドする
           //文字の位置シフトも利用した例
            public override string ToString()
            {
                return string.Format("Name={0,-15} Age={1,-8}", Name, ID);
            }
        }

        //ctor
        public Sample1()
        {
            //オブジェクトを作成 object1が「オブジェクト」であり「Customerクラスのインスタンス」でもある
            //object1はCustomerに基づくオブジェクトの参照を返す。これはデータ自体を含んでいない
            //(アドレスの入れ物とメモリが確保されている)
            Customer object1 = new Customer();

            object1.ID = 100;
            object1.Name = "MyName";

            //これはポインタ。オブジェクトを参照しない「オブジェクト参照」を作成している(アドレスの入れ物だけでメモリが確保されていない)
            Customer object2;
            
            //object2.ID = 1;       //これは未割り当てのためエラーが出る

            //参照を受け渡しすればOK
            object2 = object1;
            Console.WriteLine("{0}:{1}",object2.ID, object2.Name);
            
            object2.ID = 500;
            object2.Name = "MirrorMan";
            //参照渡しから値を変更したのでobject2の変更がobject1に反映されている。クラスは参照型なのがよくわかる
            Console.WriteLine("{0}:{1}", object1.ID, object1.Name);
        }
    }
}
最終更新:2012年05月27日 18:50