一个类如何能够用于一种形式,而不能用于另一种形式

本文关键字:用于 另一种 不能 一种 何能够 一个 | 更新日期: 2023-09-27 18:26:32

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

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

这将给出一个 IndexOutOfRange 异常:

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

不过这是有效的:

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

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

在我制作 UIForm 之前,我习惯于能够从 form1 访问物种类。

如果我太模糊或非常明显,我很抱歉,但我仍然是这方面的菜鸟。

(B.T.W.没有线程进行(

一个类如何能够用于一种形式,而不能用于另一种形式

看起来

物种是UIForm上的一个属性/字段,当你在下一个形式中使用它时,你正在为变量分配一个物种new实例。

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

或者更好

private Species GetUISpecies()
{
    return UIForm.species;
}

您将species声明为表单中的private,因此无法从该表单外部访问它。 您需要将其声明为 public ,同时声明size Species类中的public

你说你的第一个例子得到了一个IndexOutOfRangeException。这是因为该 Species 实例的大小数组中只有不到两个元素。

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

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