1

以下の状況があります。データ メンバー サンプルが ChildClass1 のすべてのインスタンス間で共有され、その別のインスタンスが ChildClass2 のすべてのインスタンスと共有されるように、これを設計する簡単な方法はありますか?

abstract class BaseClass{
int sample = 0;
}

class ChildClass1: BaseClass{
}

class ChildClass2: BaseClass{
}

私は次の製品を生成することを望んでいます

ChildClass1 a = new ChildClass1();
ChildClass1 b = new ChildClass1();
ChildClass2 c = new ChildClass2(); 

a.sample = 10;

//a.sample = 10, b.sample = 10, c.sample = 0
4

3 に答える 3

2

Maybe this does, what you want:

public abstract class BaseClass
{
    public abstract int Sample { get; set; }
}  

public class ChildClass1 : BaseClass
{
    private static int mSample = 0;
    public override int Sample 
    { 
        get { return mSample; }
        set { mSample = value; }
    }
}

public class ChildClass2 : BaseClass
{
    private static int mSample = 0;
    public override int Sample 
    { 
        get { return mSample; }
        set { mSample = value; }
    }
}

class Program
{
    static void Main(string[] args)
    {
        var a = new ChildClass1();
        var b = new ChildClass1();
        var c = new ChildClass2();

        a.Sample = 10;

        Console.WriteLine(a.Sample); // 10
        Console.WriteLine(b.Sample); // 10
        Console.WriteLine(c.Sample); // 0
    }
}  
于 2013-04-06T16:25:42.553 に答える
0

singleton patternを調べることをお勧めします。

共有データを保持するシングルトンとしてクラスを作成します。次に、3 つのクラスすべてがシングルトンを参照するようにします。

于 2013-04-12T17:55:29.567 に答える