1

私は C# を学んでおり、現在モノゲームで遊んでいます。私がやろうとしているのは、Game1 クラスで「randVar」と呼ばれる System.Random クラスのパブリック インスタンスを宣言し、Testz (Sprite から派生) クラスからアクセスすることです。これは機能していません。「名前 'randVar' は現在のコンテキストには存在しません」と表示されます。randVar はパブリックなので、アクセスできるはずだと思ったので、理由を理解しようと頭を悩ませています。

私のソースコードはhttps://gist.github.com/4225880です。

4

4 に答える 4

1

randVarクラスのメンバーにアクセスできるようにするにGame1は、最初にクラスのインスタンスが必要です。クラスの他の public メンバーと同じです。現在、Testzクラスのスコープ内には存在しません。乱数だけが必要な場合は、クラス Random randVar = new Random()内で行う必要があります。Testz

于 2012-12-06T17:13:56.177 に答える
0

Game1 で randVar を定義しますが、TestZ を使用します。定義を TestZ またはより良い Sprite に移動するだけです。

また、Random はスレッドセーフではないことも知っておく必要があります。したがって、各クラスにそのインスタンスを保持させる方がよいでしょう。

于 2012-12-06T17:17:58.463 に答える
0

最初のクラスを 2 番目のクラスでインスタンス化せずに、あるクラスで定義されたインスタンス変数を別のクラスから参照することはできません。TestZクラスで次のことができます。

Game1 oGame1 = new Game1();

次に、次のことができます。

location.X = oGame1.randVar.Next(0,100) * .01f * screenBounds.Width;
于 2012-12-06T17:16:20.760 に答える
-1

static変数の宣言に修飾子を追加する必要があります。

public static Random randVar = new Random();
于 2012-12-06T17:14:16.680 に答える