-2

シングルトン クラスを 1 つ作成しましたが、Visual Studio を起動した直後に初めて実行すると、count の値が最初はゼロであるため期待される結果が出力され、1 に達するとループから抜け出します。 2 回目に実行すると、カウンターの値は 1 のままで、デバッグを停止してもゼロに戻りません。問題の解決策を見つけるのを手伝ってください。ありがとう。私のクラスのコードは以下のとおりです。

public partial class Singleton_class : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        CEO c1 = CEO.GetCeoObject("Rahul", "MS", 28);
        CEO c2 = CEO.GetCeoObject("Ram", "MS", 26);
        Response.Write(c1.name + " " + c1.qualifiaction + " " + c1.age + "<br/>");
        Response.Write(c2.name + " " + c2.qualifiaction + " " + c2.age + "<br/>");
     }
}
namespace Singleton
{
    public class CEO
    {
        public static CEO c1;
        public static int count;
        public string name;
        public string qualifiaction;
        public int age;

        private CEO(string n, string q, int a)
        {
            this.name = n;
            this.qualifiaction = q;
            this.age = a;
        }
        public static CEO GetCeoObject(string name, string quali, int age)
        {
            if (count == 0) //this remains at one
            {
                c1 = new CEO(name, quali, age);
                count++;
            }
            return c1;
        }
    }
}
4

2 に答える 2

4

GetCeoObjectc1最初に呼び出されたときに内部静的オブジェクトを作成します。
2 回目に呼び出すと、GetCeoObjectc1は最初の呼び出しで作成されたオブジェクトを返します。これを別の変数に割り当てますが、これは最初の変数で割り当てられたインスタンス
への同じ参照です。c1同じメモリ領域への参照です。
値を出力すると、同じ値が出力されても不思議ではありません。

于 2013-06-19T22:58:49.230 に答える