C#将多个项目添加到列表

时间:2018-10-13 12:34:13

标签: c# list

最近从python背景中获取了C#。目前正在尝试使用C#中的列表。假设我设计了一个应用,希望存储有关汽车的所有信息,例如名称,品牌和颜色。我也想要它,以便用户可以将多辆汽车添加到列表中,以便以后显示?我将如何完成这项任务?

         private void Button_Click(object sender, RoutedEventArgs e)
    {
        List<string> Cars = new List <string>();

        string colour = txtInput.Text;

        Cars.Add(colour);

        lstDisplay.Items.Add(colour);

    }
}

}

这是我到目前为止的一些代码。该程序从用户那里获取输入并将其存储,然后将其添加到列表中并显示在列表框中。但是,我注意到每次将新颜色添加到列表中时,它似乎总是空的吗? 我将如何使列表包含不同颜色的输入?

3 个答案:

答案 0 :(得分:3)

如果我正确地阅读了您的内容,那么每次单击该按钮时,您都想向列表中添加新的颜色,对吗?

如果是这种情况,那么您的问题就在这里:

List<string> Cars = new List <string>();

每次按按钮都将重新创建列表,这实际上是将列表清零。 List<type> name = new List<type>();会创建一个全新的列表,即使多次调用也是如此。因此,当您在方法中调用它时,您就是在这样做。

相反,您希望将其放在方法的类的开头,因此只能创建一次。像这样:

class CarClass()
{
  List<string> Cars = new List <string>();

  private void Button_Click(object sender, RoutedEventArgs e)
  {
    string colour = txtInput.Text;
    Cars.Add(colour);
    lstDisplay.Items.Add(colour);
  }
}

这样,将在类创建开始时创建并初始化列表。然后,您的方法将添加到列表中而不将其清零。

答案 1 :(得分:1)

如果在创建此列表时已经有一些汽车,则可以执行以下操作:

var list = new List<Car>(existingCars);

如果没有,请稍后再执行以下操作:

list.AddRange(existingCars);
list.Add(existingCar);

编辑: 每次创建新列表时,请移动此行

List<string> Cars = new List <string>();

从此方法到类,例如:

private readonly List<string> Cars = new List <string>();

答案 2 :(得分:0)

为了更好地回答您的问题,我需要更多信息。您可以将汽车信息存储在内存中,但是当应用程序重新启动时,所有保存的汽车信息将丢失。如果您需要无限期地跟踪汽车信息,则需要将汽车信息存储在数据库中。

class CarClass {

    private List<string> Cars;

    public CarClass() {
        Cars = new List <string>();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        string colour = txtInput.Text;

        Cars.Add(colour);

        lstDisplay.Items.Add(colour);

    }

}

这只会在实例化和使用CarClass时将Cars列表存储在内存中。如果以后需要它,则在不再引用CarClass时,需要将汽车列表信息保存在数据库中。