如何访问存储在另一个数组中的数组中的值?

时间:2018-04-13 09:59:13

标签: c# unity3d

我正在寻找一种方法来访问数组中的数组项,该数组由另一个数组保存。我无法弄清楚:/

我有2个脚本:Game_Manager.csBoard.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'

1 个答案:

答案 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类名作为变量名。