尝试从C#中的结构数组中删除条目。得到冲突的信息?

时间:2018-08-20 09:32:29

标签: c# arrays struct

我一直在研究这个主题,并得到了矛盾的答案。任何帮助表示赞赏。 对于一项作业,我被指示创建一个数组结构。我试图在一种情况下删除条目,而在另一种情况下更改。这应该是由字段之一而不是索引号决定的。

var countOfEmployees = 0;
var employees = new EmployeeData[100];
Console.Write("Please enter employee you want to delete:");
string deleteEmployee = Console.ReadLine();
bool deleted = false;
for (int x = 0; x < countOfemployees; x++)
{

 if (items[x].ItemNumber == deleteItemNumber)

  {
 deleted = true;   

  }
if (true)
 {

//code goes here                                       

  }

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在数组中,您也许可以从占位符中删除该值,但是如果不做一些工作,便无法删除实际的项。

基本上,您可以做的是:找到要搜索的值,然后将其替换为null并在其他所有函数中相应地对待它。

选项2是删除项目,然后使用一个函数,将具有较高索引的所有值向上“移位”。

选项3是使用C#/。NET必须提供的与集合有关的高级功能,创建一个List,删除该项目并将其转换回数组。

var employees = new EmployeeData[100];
var list = employees.ToList();
int index=-1;

//search through in a loop (won't write it here)...
    index = x; //get the index in your list then break the loop
    break; //end the loop


list.RemoveAt(index); //delete the spot outside the loop
employees=list.ToArray();

当然,如果搜索没有找到任何内容,则需要进行检查,但是我认为您可以在没有我帮助的情况下实现这一点。 当然,这是我假设数组中只有一个条目具有这种值的情况。 如果不是这样,您将不得不遍历并擦除它们,直到搜索不再找到任何东西为止。