查找数组中的下一个可用位置

时间:2014-02-25 21:56:23

标签: c# arrays multidimensional-array

我有一个固定大小为50个元素的二维数组。我需要询问用户一些值并将它们插入到数组中。问题是“如何确保我不会覆盖那里的任何内容?”

当我启动程序时,阵列中已经有一些内容,但我不知道多少。如何在数组中找到下一个可用的ID,在那里插入我的内容而不会覆盖那些已经存在的内容?

我尝试使用array.GetUpperBound和array.GetLength,但无论数组中已有多少元素,它们都会返回固定值。

使用数组,我不能使用列表或类似的东西。

如何找到我阵列中的下一个“免费”位置?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Array,那么您的所有值都将包含默认值。例如,如果您有一个二维int数组,请执行以下操作:

 var arr = new int[2, 3];

arr[1,2]将等于0,这是int的默认值。无论如何,您可以定义一个扩展方法来查找二维数组的可用位置,如下所示:

public static class MyExtensions
{
    public static void FindAvailablePosition<T>(this T[,] source, out int x, out int y)
    {
        for (int i = 0; i < source.GetLength(0); i++)
        {
            for (int j = 0; j < source.GetLength(1); j++)
            {
                if (source[i, j].Equals(default(T)))
                {
                    x = i;
                    y = j;
                    return;
                }
            }
        }

        x = -1;
        y = -1;
    }
}

你可以像这样使用它:

 var arr = new int[2, 3];
 arr[0, 0] = 12;  // for example
 int x, y;
 arr.FindAvailablePosition(out x,out y);

 // now x = 0, y = 1