1

我正在学习 C#,目前正在玩 Monogame。我要做的是在我的 Game1 类中声明一个名为“randVar”的 System.Random 类的公共实例,然后从我的 Testz(从 Sprite 派生)类中访问它。这不起作用,它告诉我“当前上下文中不存在名称 'randVar'。” 我正在挠头试图找出原因,因为 randVar 是公开的,我认为我应该能够访问它。

我的源代码是https://gist.github.com/4225880

4

4 回答 4

1

为了能够访问该类的randVar成员Game1,您必须首先拥有该类的一个实例。它与类的任何其他公共成员相同。它目前不存在于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

如果没有在第二个类中实例化第一个类,就不能从另一个类中引用定义在一个类中的实例变量。您可以在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 回答