最近从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);
}
}
}
这是我到目前为止的一些代码。该程序从用户那里获取输入并将其存储,然后将其添加到列表中并显示在列表框中。但是,我注意到每次将新颜色添加到列表中时,它似乎总是空的吗? 我将如何使列表包含不同颜色的输入?
答案 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时,需要将汽车列表信息保存在数据库中。