我有一个固定大小为50个元素的二维数组。我需要询问用户一些值并将它们插入到数组中。问题是“如何确保我不会覆盖那里的任何内容?”
当我启动程序时,阵列中已经有一些内容,但我不知道多少。如何在数组中找到下一个可用的ID,在那里插入我的内容而不会覆盖那些已经存在的内容?
我尝试使用array.GetUpperBound和array.GetLength,但无论数组中已有多少元素,它们都会返回固定值。
我 使用数组,我不能使用列表或类似的东西。
如何找到我阵列中的下一个“免费”位置?
非常感谢您的帮助。
答案 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