限制数组大小2D(C#单位)

限制数组大小2D(C#单位),c#,android,unity3d,C#,Android,Unity3d,大家好,可以像这个例子那样限制数组大小吗 现在我只想展示其中的6个 到目前为止,我所做的是 CustomClass const int MAX = 104; // = 8 decks * 52 cards / 4cardsoneround const int Y = 6; int[,] arrayRoad = new int[Y, X]; public int[,] GetRoad(int x) { arrayRoad = new int[x, 6]; return a

大家好,可以像这个例子那样限制数组大小吗

现在我只想展示其中的6个

到目前为止,我所做的是

CustomClass

const int MAX = 104;  // = 8 decks * 52 cards / 4cardsoneround
const int Y = 6;

int[,] arrayRoad = new int[Y, X];

 public int[,] GetRoad(int x) {
    arrayRoad = new int[x, 6];
    return arrayRoad;
}
现在我将它显示在我的main类上,如下所示

ScoreBoard bsb = new ScoreBoard();

private void Road()
{
    bsb.makeRoad(history); // Road
    int[,] arrayRoad = bsb.GetRoad(6); //<--- sample value 6

    string s = "";
    for (int y = 0; y < arrayRoad.GetLength(0); y++)
    {
        //just 27 for now
       
        for (int x = 0; x < 28; x++)
        {
            s += string.Format("{0:D2}",arrayRoad[y, x]);
            s += ".";
        }
        s += "\n";
    }
    Debug.Log(s);
}
int[,] arrayRoad = bsb.GetRoad(12);
其中在我的
Max=104
Y=6

int[,] arrayRoad = bsb.GetRoad(12,6); //12 rows and 6 in height

    string s = "";
    for (int y = 0; y < arrayRoad.GetLength(0); y++)
    {
        for (int x = 0; x < arrayRoad.GetLength(1); x++)
        {
            s += string.Format("{0:D2}",arrayRoad[y, x]);
            s += ".";
        }
        s += "\n";
    }
    Debug.Log(s);
}
请注意:

 public int[,] GetBigEyeRoad(int x) {
    arrayRoad = new int[x, 6]; // <-------------
    return arrayBigEyeRoad;
public int[,]GetBigEyeRoad(intx){
arrayRoad=newint[x,6];//请注意:

 public int[,] GetBigEyeRoad(int x) {
    arrayRoad = new int[x, 6]; // <-------------
    return arrayBigEyeRoad;
public int[,]GetBigEyeRoad(intx){

arrayRoad=newint[x,6];//我在这里做的是将我的旧数组复制到新数组,就像下面的代码一样

int[,] arrayBigRoadResult = new int[6, x];
//copy manually the element references inside array
for (int i = 0; i < 6; i++)
{
    for (int j = 0; j < x; j++)
    {
        arrayBigRoadResult[i, j] = arrayBigRoad[i, j];
    }
 }
return arrayBigRoadResult;

它将只显示12列和6行:)

我在这里做的是将我的旧数组复制到新数组,就像下面的代码一样

int[,] arrayBigRoadResult = new int[6, x];
//copy manually the element references inside array
for (int i = 0; i < 6; i++)
{
    for (int j = 0; j < x; j++)
    {
        arrayBigRoadResult[i, j] = arrayBigRoad[i, j];
    }
 }
return arrayBigRoadResult;

它只会显示12列6行:)

当你运行这个代码时会发生什么?可能吗?它给了我一个
超出范围的
错误。
arrayBigEyeRoad
又是一个
arrayRoad
的打字错误吗?@RodrigoRodrigues打字太多了,我很抱歉。天哪,预期的结果是什么?当你运行这个代码时会发生什么?有可能吗?这给了我一个
超出范围的
错误。是
arrayBigEyeRoad
又是
arrayRoad
的一个打字错误吗?@RodrigoRodrigues打字太多了,我很抱歉。天哪,预期的结果是什么?请查看我在你发布答案之前对我所做的编辑检查我答案的最后一部分:你正在修复密码在GetRoad方法中,将数组的D维度化为6。稍后,在for循环中,您尝试使用大于6的值在第二维度上迭代。这是一个问题,实际上已经解决了,但现在的问题是,我在2D数组上的值已经消失了。Hmmmm。请查看我在发布an之前对我所做的编辑请检查我答案的最后一部分:在GetRoad方法中,您正在将数组的第二维度固定为6。稍后,在for循环中,您尝试使用高于6的值在第二维度上进行迭代。这是一个问题,实际上已经解决了这个问题,但现在的问题是,我在2D数组上的值已经消失了。Hmmmm。
int[,] arrayRoad = bsb.GetRoad(12);