ランダム変数を1回だけ初期化しようとしていますが、 'rnd'としましょう。だから私のプログラムの多くのポイントから呼び出された場合、ランダム変数は初回のみ、再び初期化されません。C#:シングルトンパターンでランダム()を1回だけ初期化する
私はシングルトンを作成しましたが、Random()を1回だけ呼び出す方法はわかりません。このクラス内の
public sealed class Randomize
{
private static Randomize instance = null;
private static readonly object padlock = new object();
Randomize()
{
}
public static Randomize Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new Randomize();
}
return instance;
}
}
}
}
私に、一度だけ初期化されているプライベート読み取り専用ランダム変数、「RND」、最初の時間を作成したいと思います。そこで、私はしたいと思います
Random rnd = new Random()
それは初回のみが割り当てられているので、私はその値を変更できるようにしたくないので、私は唯一のプロパティは読み取り専用になりたい
public Random Rnd
{
get { return rnd; }
}
を(取得)、ではない:例えば、その値を読み込むためのプロパティを作成セット。私のプログラムの多くのポイントからそう
私が行うことができます。
private readonly Random rnd;
Random rnd = Randomize.Instance.Rnd;
しかし、私は表現の上に使用してそれを呼び出すたびに、私は(新しいランダム()を実行して)再び確率変数をinitizalizeしたくない代わりに、I rnd変数が最初に初期化されたのと同じ値を常に取得したい。
どのようにすればいいですか?
「ランダム」は、複数のスレッドから同時に操作するようには設計されていません。 – Servy
Skeetの[シングルトンに関する記事](http://csharpindepth.com/Articles/General/Singleton.aspx)を見てください。 –
何がうまくいかないのですか? 'new Random()'はどこですか? –