创建一个类数组

时间:2013-03-01 18:50:48

标签: c# arrays object

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

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'参数的构造函数

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

4 个答案:

答案 0 :(得分:9)

你刚刚使用了错误的括号。您总是使用方括号表示数组和索引器。圆括号用于调用方法,构造函数等。您的意思是:

car[] arr = new car[num];

请注意,传统上.NET类型是Pascal,因此您的类型应为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();

答案 1 :(得分:1)

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

car[] arr = new car[num];

答案 2 :(得分:0)

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();
        }
    }
}

答案 3 :(得分:0)

如果您的要求不仅限于使用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];
           }
      }

此致