【问题标题】:Adding objects from a constructor to an ArrayList [duplicate]将对象从构造函数添加到 ArrayList [重复]
【发布时间】:2021-05-16 14:56:21
【问题描述】:

我正在尝试使用我使用构造函数类创建的汽车创建一个 ArrayList,然后使用 foreach 循环打印每辆汽车的型号名称。

我已经创建了汽车对象如下

Car car1 = new Car("Audi e-tron", "Black", 2021);
Car car2 = new Car("Audi RS7", "Black", 2021);
Car car3 = new Car("Audi A5", "Black", 2021);

我创建了 ArrayList 并尝试开始将汽车对象添加到 ArrayList

ArrayList carList = new ArrayList();
carList.Add(car1);
carList.Add(car2);
carList.Add(car3);

我测试了代码到目前为止是否正常工作,并检查了 ArrayList 是否已填充

Console.WriteLine("car list: {0}", carList[0]);

但是会返回

ArrayListPractice.MainClass+Car

如何将构造函数中的对象添加到 ArrayList 并返回对象的参数?谢谢!

【问题讨论】:

  • 我们有 2021 年,你为什么还要使用 ArrayList??使用List<Car>
  • 你做得对,只是在没有覆盖 ToString() 的对象上调用 ToString() 只会给你类名。因此,覆盖 Car 中的 ToString 以输出您想看到的内容。另外,为什么要使用 ArrayList?那早就死了。
  • 你好。我实际上会使用强类型 List 而不是 ArrayList。所以像这样声明列表: var carList = new List();此外,如果要打印名称,则需要覆盖 Car 类中的 ToString() 函数或编写类似以下内容: Console.WriteLine( carList[0].Name );
  • 你可能想看看我对这个问题的回答:stackoverflow.com/questions/65365412/…。它没有直接解决您的问题,但它使用汽车(这就是为什么听起来很熟悉)并触及您问题的某些方面

标签: c# arraylist


【解决方案1】:

你应该重写 Car 对象,ToString() 方法,其他不需要考虑,它会自动完成

【讨论】:

    【解决方案2】:

    你到底想在下面的代码块中打印什么?

    Console.WriteLine("car list: {0}", carList[0]);
    

    如果你想打印你传递给第一个元素的构造函数的字符串属性("Audi e-tron"),例如,试试这个:

    Console.WriteLine("car list: {0}", carList[0].Name); // 'Name' should be the field name you're looking for
    

    【讨论】:

    • 正如@Crowcoder 上面指出的,在Car 类中添加ToString 覆盖将提供一种查看您包含在该方法中的每辆车的信息的方法。
    猜你喜欢
    • 2013-10-27
    • 2019-04-22
    • 2016-08-10
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2013-11-09
    • 2017-04-25
    • 2014-04-22
    相关资源
    最近更新 更多