C# 添加多个项到列表

3

最近从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);

    }
}

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


1
泛型类List<T>有一个名为AddRange的方法,您可以在单个调用中添加多个项。当然,您始终可以循环遍历您的汽车数据,并使用Add逐个添加项目。但是您的问题太广泛了。您是否有一个Car类?您从哪里获取数据以初始化单个Car实例?换句话说,您应该展示您尝试过什么。 - Steve
2
你需要创建一个包含所有相关信息的Car类,然后创建一个List<Car>。在这个阶段,我建议你找一本好书或C#教程,以有序、结构化和一致的方式教授你C#的所有重要方面。虽然Stack Overflow对于特定问题非常有用,但并不是学习语言基础知识的好方法。 - Jon Skeet
1
你可以查一下关于GenericList的内容,这取决于你想在列表上执行什么操作。如果不需要太多操作,那么Array可能就可以了。还有IEnumerableIList等等,可选项很多(说着笑话) :-) - jazb
我的代码已经更新了。 - user10425264
3个回答

4

如果我理解正确,每次点击按钮时,您都想将新的颜色添加到列表中,是吗?

如果是这样,您的问题就在这里:

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

你每次按下按钮都会重新创建列表,实质上清空了列表。即使多次调用,List<type> name = new List<type>();也会创建一个全新的列表。因此,当你在方法中调用它时,就是这样做的。
相反,你希望将它放在类的开头,而不是方法中,这样只会创建一次。类似于:
```csharp class MyClass{ List name = new List(); void MyMethod(){ //... } } ```
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
如果您在创建此列表时已经拥有一些汽车,则可以执行以下操作:
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>();

1
为了更好地回答您的问题,我需要更多的信息。您可以将汽车信息存储在内存中,但是当应用程序重新启动时,所有保存的汽车信息都将丢失。如果您需要无限期跟踪汽车信息,则需要将汽车信息存储在类似数据库的东西中。
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不再被引用时使用它,则需要将carlist信息保存在数据库中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接