我正在寻找一种方法来访问数组中的数组项,该数组由另一个数组保存。我无法弄清楚:/
我有2个脚本:Game_Manager.cs
和Board.cs
。
在Board.cs
我有以下变量。 (数组大小在开始时自动调整):
public Transform[] Clubs_Bottom = new Transform[0];
public Transform[] Clubs_Top = new Transform[0];
public Transform[] Spades_Left = new Transform[0];
public Transform[] Spades_Right = new Transform[0];
public Transform[] Diamonds_Left = new Transform[0];
public Transform[] Diamonds_Right = new Transform[0];
public Transform[] Hearts_Bottom = new Transform[0];
public Transform[] Hearts_Top = new Transform[0];
在Game_Manager.cs
我有以下方法:
public void setCardBoardSlot(int Hand_CardNumber)
{
Array[] ArrayList = new Array[8]; // The card arrays
// Fill our array list
ArrayList[0] = Board.Script.Diamonds_Left;
ArrayList[1] = Board.Script.Diamonds_Right;
ArrayList[2] = Board.Script.Clubs_Top;
ArrayList[3] = Board.Script.Clubs_Bottom;
ArrayList[4] = Board.Script.Spades_Left;
ArrayList[5] = Board.Script.Spades_Right;
ArrayList[6] = Board.Script.Hearts_Bottom;
ArrayList[7] = Board.Script.Hearts_Top;
// Acces Array item 1's array, and the first item in that array
ArrayList[0[0]].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();
}
这个方法只是示范,直到我找到如何访问每个数组项。当我使用此代码时,我在第2行到最后一行出现以下错误:
Cannot apply indexing with [] to an expression of type 'int'
答案 0 :(得分:0)
Array类本质上包含一个通用数组 - 因此Array数组可以包含不同类型的数组(可能在运行时更改)。访问该数组的元素将返回类Array的单个实例(而不是数组本身),因此使用ArrayList [0] [0]将导致编译器错误“无法将带有[]的索引应用于类型'的表达式阵列'“
使用类Array数组,您需要将数组元素显式地转换为数组类型(这是一个Transform数组)&amp;然后以这种方式访问第一个元素:
((Transform[])ArrayList[0])[0].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();
由于所有包含的数组都是相同的类型 - 更简单的方法是使用Transform数组的数组 - 您的ArrayList声明将变为:
Transform[][] ArrayList = new Transform[8][];
每个数组元素的赋值将保持不变,然后您只需使用:
ArrayList[0][0].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();
请注意,ArrayList是C#中定义的类类型 - 虽然编译器可以通过上下文确定您引用的是变量,但在我看来,最好避免使用.Net类名作为变量名。