c#如何删除数组中的项?

时间:2015-08-08 02:14:03

标签: c#

Console.WriteLine ("Enter the number of book to delete (1 to {0})", amount);
int posToDelete = Convert.ToInt32 (Console.ReadLine ())-1;

for (int i = posToDelete; i < amount - 1; i++)
b [i] = b [i + 1];
 amount--;

// hi! i am new to programming... could anyone please explain this to me in detail

// * readline之后-1的用法是什么    // *解释我的循环plz

//link of the question
//http://practiceexercisescsharp.blogspot.com.es/2013/05/411-books-database.html

2 个答案:

答案 0 :(得分:1)

fisrt问题:

数组从0开始。 例如:有一个数组b包含4个元素。

b[4] = {1,2,3,4};

因此b[0]1b[3]4。 没有b[4]

如果要删除第二项(哪个元素为2),则应删除b[1]
所以职位是1 这就是我们在readline之后使用-1的原因。

第二个问题:

for (int i = posToDelete; i < amount - 1; i++)
{
    b [i] = b [i + 1];
    amount--;
}

int = posToDelete是我们要删除的项目的位置 我们使用下一个项目来替换它 这是b[i] = b[i+1];
因为我们删除了一个项目,所需金额为-1;
我们还使用b[4]例如:
如果我们删除2 最初:[1,2,3,4] amount=4;
循环开始:[1,2,3,4] posDelete1amount3;
b[1]=b[2];我们使用3替换2;
b[2]=b[3];我们使用4替换3;
i正在增加,直到i3;循环结束 新数组为[1,3,4]

答案 1 :(得分:0)

您图书数组的indexer可能是以下布局:

book[0] = "Book1" //Where user inputs 1 and then subtract 1 from it to access index 0

请考虑以下示例:

book[0] = "Book1" //Book input is 1 less 1 = index of 0
book[1] = "Book2" //Book input is 2 less 1 = index of 1
book[2] = "Book3" //Book input is 3 less 1 = index of 2

当然,删除这本书的逻辑是有问题的,因为我们不确定这本书是如何在ArraysCollections.中安排的。但在您的情况下,您指的是位置所以可以说位置1是 等于索引0