-1

我正在制作一个非常基本的 2d(自上而下)“游戏”。因此我使用 2 种形式。一个用于 UI (UIForm),另一个用于游戏的视觉部分(Form1,也是要加载的第一个表单)。我还有一个类,它定义了不同的动物种类并提供了大小等属性。

但是,似乎我无法从 Form1 访问 Species 类,因为我创建了 UIForm (它可以访问物种类)。

这将给出一个 IndexOutOfRange 异常:

private Species species = new Species();
int i = this.species.size[1];

这虽然有效:

int i = UIForm.species.size[1];

在这里,为了测试,我在 UIForm 中公开了物种,并使用它来访问 Species 类。这行得通,所以我可以解决它,但我该如何解决这个问题?为什么会这样?

在我制作 UIForm 之前,我曾经能够从 form1 访问物种类。

如果我太模糊或者很明显,我很抱歉,但我仍然是一个菜鸟。

(顺便说一句,没有线程正在进行)

4

3 回答 3

1

您在表单内声明speciesprivate因此您无法从该表单外部访问它。您需要将其声明为public,并在类中声明sizepublicSpecies

于 2013-08-06T10:53:39.773 回答
1

看起来好像物种是一个属性/字段UIForm,当您在下一个表单中使用它时,您正在将一个new物种实例分配给一个变量。`

private Sepcies species = new Species() // wrong
private Species species = UIForm.species // possibly right

或者更好

private Species GetUISpecies()
{
    return UIForm.species;
}
于 2013-08-06T10:54:55.083 回答
0

你说你IndexOutOfRangeException的第一个例子得到了一个。这是因为该 Species 实例的 size 数组中的元素少于两个。

在第二个示例中,大小数组至少有 2 个元素,这就是为什么您可以在该点访问索引 1 处的元素。

结论是介于两者之间的某个地方,大小数组被重新创建为更大的大小,或者物种变量最终指向不同的实例。通过调试器运行您的代码,并查看它如何与物种变量/大小数组交互。

于 2013-08-06T11:08:58.530 回答