创建一个类数组

本文关键字:一个 数组 创建 | 更新日期: 2023-09-27 18:01:51

我需要创建另一个类的数组。例子:

namespace std
{
      public class Car
      {
           double number,id;
           public Car()
           {
               // initializing my variables for example:
               number = Random.nextdouble();
           }
      }
      public class Factory
      {
           public Factory(int num)
           {
               Car[] arr = new Car(num);
           }
      }
}

问题是我得到这个错误:

'Car'不包含接受'1'参数的构造函数

我只需要在Factory类中有一个Car的数组(汽车变量通过其构造函数初始化)。

创建一个类数组

你刚才用错括号了。数组和索引器总是使用方括号。圆括号用来调用方法、构造函数等。你的意思:

car[] arr = new car[num];

注意,传统的。net类型是pascal -case,所以你的类型应该是CarFactory,而不是carfactory

还要注意,在创建数组之后,每个元素都将是一个空引用——所以不应该这样写:

// Bad code - will go bang!
Car[] cars = new Car[10];
cars[0].SomeMethod(0);

:

// This will work:
Car[] cars = new Car[10];
cars[0] = new Car(); // Populate the first element with a reference to a Car object
cars[0].SomeMethod();

当你声明数组或索引器时,你需要使用[]而不是()

car[] arr = new car[num];

如果您的要求不限制仅使用Array,则可以使用类型化列表。

List<Car> = new List<Car>(num); 
//num has to be the size of list, but a list size is dinamically increased.

你代码中的错误是数组应该按如下方式初始化:

public class factory
      {
           public factory(int num)
           {
           car[] arr = new car[num];
           }
      }

认为,

using System;
namespace ConsoleApplication1
{
    public class Car
    {
        public double number { get; set; }
        public Car()
        {
            Random r = new Random();            
            number = r.NextDouble();// NextDouble isn't static and requires an instance
        }
    }
    public class Factory
    {
        //declare Car[] outside of the constructor
        public Car[] arr;
        public Factory(int num)
        {
            arr = new Car[num]; 
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Factory f = new Factory(3);
            f.arr[0] = new Car();
            f.arr[1] = new Car();
            f.arr[2] = new Car();
            foreach (Car c in f.arr)
            {
                Console.WriteLine(c.number);
            }
            Console.Read();
        }
    }
}