【问题标题】:Access a return parameter type array of a method访问方法的返回参数类型数组
【发布时间】:2019-12-27 09:52:41
【问题描述】:

我有一个类Cars,在方法@​​987654322@ 中创建多个Cars 并将它们作为数组cars 返回。在我的班级Home 中,我有方法main(),我想在其中使用数组“汽车”。在示例中,我只想写下每辆车的名称。但似乎name 属性为空。我做错了什么?

class Car
{
    //only one attribute for test
    public string name;
    // public string color;
    // public string brand;

    public car()
    {
    }

    //create multiple Car, limited to 2 for the test und return them in an array
    public static Car[] get_cars()
    {
        Car[] cars = new Car[2];
        for (int k = 0; k<cars.Length; k++)
        {
            cars[k] = new Car();
            cars[k].name = "Car 0" + k;
        }
        return cars;
    }
}

class Home
{
    private void Main()
    {
        Car[] cars = new Car[2];
        cars = Car.get_cars();

        cars[0] = new Car();
        //the output is empty, it seems that cars[0].name is emtpy;
        set_label_header(cars[0].name);

        cars[1] = new Car();

        //the output is empty, it seems that cars[1].name is emtpy;
        set_label_header(cars[1].name);

        //that works
        set_label_header("test");
    }
}

【问题讨论】:

  • @Nuffin 更改代码,虽然它使这项工作:不应该这样做。拼写错误/错误可能是问题的原因。
  • @FrankerZ 问题的表述方式暗示这是一个运行时问题,并且代码被严重复制(它仍然无法编译,因为我错过了Car ctor)。否则我会同意。
  • C# 中的 Google 方法命名约定。

标签: c# arrays return


【解决方案1】:

但似乎“名称”属性为空

是因为下面这行:

cars[0] = new Car();

new Car() 创建了一个全新的对象,并且您只设置了它的 id,所以 name 是空的。通过get_cars 方法,您已经返回实例化的对象,因此您不需要再次实例化。

你实际上不需要更新它。

以下代码对您的情况来说足够公平:

Car[] cars = Car.get_cars();

然后调用你的方法:

set_label_header(cars[0].name);

【讨论】:

  • Crprivte 的明显拼写错误如何?
  • @FrankerZ 输入错误?
【解决方案2】:

您正在这里生成新的空 Car 对象:

cars[0] = new Car();
cars[1] = new Car();

您应该直接访问汽车数组而不创建新对象。

cars[0].name

【讨论】:

    【解决方案3】:

    您正在使用new 命令重新创建数组中的对象。更改您的Main 方法如下:

    void Main() 
    { 
        Car[] cars = Car.get_cars();
        set_label_header(cars[0].name);
        set_label_header(cars[1].name);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多