2010年1月19日火曜日

インスタンスメンバーと静的メンバー(ともにデータ)を宣言してそのClassのインスタンスを2つ作成し、インスタンスメンバーと静的メンバーが2つのインスタンス間でどのようになるかを確認してみる。

using System;


class SampleClass
{
    /* インスタンスメンバーn,
     * 静的メンバーmを宣言 */
    public int n;
    public static int m;
    string s1="インスタンスメンバー";
    string s2="静的メンバー";


    public void printOut()
    {
        Console.WriteLine
            ("{0}:{1} {2}:{3}",s1,n,s2,m);
    }
}


class MainClass
{
    static void Main()
    {
        // 静的メンバーmに値を代入
        SampleClass.m = 1;
        /* SampleClassをインスタンス化して
         * sample1,sample2を定義 */
        SampleClass sample1 = 
            new SampleClass(),
            sample2=new SampleClass();
        /* sample1のインスタンスメンバーnに
         * 2を代入 */
        sample1.n = 2;


        sample1.printOut();


        /* 静的メンバーはインスタンス間で
         * 共有されmは1、インスタンスメンバーは
         * インスタンス間で共有されないことを
         * 確認(よってインスタンスメンバーnは
         * 2ではなくint型の既定値の0になる) */
        sample2.printOut();
        // 静的メンバーの値を変更
        SampleClass.m = 10;


        // すべてのインスタンスに反映される
        sample1.printOut();
        sample2.printOut();
    }
}

0 コメント:

コメントを投稿