一个类如何能够用于一种形式,而不能用于另一种形式
本文关键字:用于 另一种 不能 一种 何能够 一个 | 更新日期: 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 处的元素。
结论是,介于两者之间的某个地方,大小数组以更大的大小重新创建,或者物种变量最终指向不同的实例。通过调试器运行代码,并查看它如何与物种变量/大小数组交互。