私はskiPlan
クラスにはprivate static int lastNumber
とprivate int number
のフィールドを持っています。クラス内メソッドスコープ外の属性値を保持
私は、オブジェクトのコンストラクタは以下の通りです。この
public void upLastNumberByOne()
{
lastnumber++; // Increment the lastNumber by 1
}
のような方法があります:
public skiPlan()
{
upLastNumberByOne();
this.number= lastnumber;
}
ここでは、ものです:
私が作成するたびにオブジェクトlastNumber
-fieldの値を1だけインクリメントする必要があります。
Interlocked
クラスを使用してこれを行う方法が見つかりました。
質問は、どうしたらいいですか?
文脈がなければ、あなたが必要とする答えを確実に知ることは不可能です。あなたのコードがシングルスレッドの場合、 'Interlocked'はまったく必要ありません。上に示したようにフィールドを増分することができます。 'upLoadNumberByOne()'メソッドが2つ以上のスレッドで同時に呼び出せれば、何種類かの同期化が必要であり、このシナリオでは 'Interlocked'が最適です。なぜそれを使用したくないのですか?他のメカニズムもありますが、「連動」よりもむしろ選択する正当な理由はありません。あなたの質問はあまり明確ではありません。あなたの実際の_goal_は何ですか? _problem_は何ですか? –
コードはシングルスレッドですが、マルチスレッドアプリケーションのコーディング方法はまだ学習されていません。目標は、lastNUmberの値を取得し、上記の方法を使用して1をインクリメントするコンストラクタを持つことです。私が直面している問題は、オブジェクトが作成されたときにlastNumberプロパティの値がゼロに戻ることです。 therfor、私は私のオブジェクトのinstanciations全体の価値を維持する方法を探しています。結果はobject1.lastnumber = 1となり、2回目にオブジェクトをインスタンス化すると、object2.lastnumber = object1.lastnumber + 1になります。 –
アプリケーションが 'lastNumber'をゼロにリセットする方法はありません静的でアプリがシングルスレッドのときおそらく、あなたは 'lastNumber'を他のどこかで0に設定していますか? – HimBromBeere