我需要为这个特定项目使用数组。目前,array[10]
中的每个索引都保存了名称。我想要做的是,如果我删除array[1]
,所有数据都会向上移动一个索引,从而释放array[10] = null
。目前,我正在使用
public void Delete(int a)
{
do
{
array[a] = array[a + 1];
}
while (array[a + 1] != null);
}
但是当我尝试使用
检索数组时for (int h = 0; h < array.Length; h++)
{
Console.WriteLine(array[h]);
}
会有一个差距,其中1,3,4 ......
有没有更好的方法呢?
答案 0 :(得分:0)
当您删除某个项目时,该项目索引之后的所有内容都需要向左移动一个项目。它之前的一切都将保持不变。因此,我们需要始终从该指数开始,而不是在它之前使用指数。方法如下:
public static void Delete(int index)
{
if (index >= array.Length)
{
return;
}
if (index == array.Length - 1)
{
array[index] = null;
return;
}
for (int i = index; i < array.Length - 1; i++)
{
array[i] = array[i + 1];
}
array[array.Length - 1] = null;
}
答案 1 :(得分:0)
在删除指定索引处的元素后,需要调整数组大小。执行删除操作后,您可以致电Array.Resize。
您可以通过以下方式调整大小:
public static void Delete(int a)
{
int resizedArrayLength = array.Length - 1;
while(a < resizedArrayLength)
{
array[a] = array[a + 1];
a++;
}
Array.Resize(ref array, resizedArrayLength); // this will resize your array to specified length.
}