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

我正在寻找一种方法来访问由另一个数组持有的数组中的数组项。我不太清楚:/


我有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();

}

在我找出如何访问每个数组项之前,此方法仅是说明性的。使用此代码时,我在倒数第二行收到以下错误:

Cannot apply indexing with [] to an expression of type 'int'


繁花如伊
浏览 132回答 1
1回答

喵喵时光机

Array类本质上包含一个通用数组-因此Array数组可以包含不同类型的数组(在运行时可能会更改)。访问该数组的元素将返回Array类的单个实例(而不是数组本身),因此使用ArrayList [0] [0]将导致编译器错误“无法将[]的索引应用于'Array'类型的表达式”。使用Array类的数组,您需要将数组元素显式转换为您的数组类型(这是Transform的数组),然后以这种方式访问第一个元素:((Transform[])ArrayList[0])[0].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();由于所有包含的数组都是同一类型-一种更简单的方法是使用Transform数组的数组-您对ArrayList的声明将变为:Transform[][]&nbsp;ArrayList&nbsp;=&nbsp;new&nbsp;Transform[8][];每个数组元素的分配将保持不变,然后您可以简单地使用:ArrayList[0][0].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();请注意,ArrayList是C#中定义的类类型-尽管我认为编译器可以根据上下文确定要引用的变量,但最好避免将.Net类名用作变量名。
打开App,查看更多内容
随时随地看视频慕课网APP